目前有一批图书的 InDesign 文件,需要把图书内容进行数字化处理,最终以在线图书的形式呈现。
现在已经从 InDesign 导出了 HTML + CSS + 图片,接下来需要把 HTML 的内容和图片上传到数据库,想问一下 HTML 的内容用什么样的数据结构存储比较合理?
其中 HTML 会有标题、正文、图片、表格、音视频、超链接等各种类型的内容。
另外还希望能够给图书使用不同的主题,比如主题一的 h1 用的某种字号和颜色,主题二的 h1 用另一种字号和颜色。
![]() | 1 opengps 2024-08-01 16:46:11 +08:00 直接作为文件存储,而不是用数据库存储 |
![]() | 2 dream4ever OP @opengps 后期还需要实现各种读书软件常见的高亮、笔记之类的功能,作为文件存储的话,这类功能不方便实现吧? |
3 yunv2 2024-08-01 16:51:05 +08:00 @dream4ever 高亮、笔记单独保存,在前端回显的时候进行处理展示,而不是保存到图书原数据中 |
![]() | 4 opengps 2024-08-01 16:51:21 +08:00 在数据库存储本身是要额外一层格式转换的。 你取用数据的过程其实都是原始内容,然后加了某些处理操作,你存数据库要比直接存原始内容多一层转换格式过程,效率更低。 |
![]() | 5 dream4ever OP @yunv2 这个肯定是要和图书原始数据分开保存的。 |
![]() | 6 hahastudio 2024-08-01 16:56:09 +08:00 我觉得这个问题跟视频索引类似,只不过可能因为图书文件小一些 |
![]() | td width="auto" valign="top" align="left"> |
8 wyl986 2024-08-01 17:04:06 +08:00 图书做文件存储,es 里面存个简化版的(纯文字,去掉 html 、图片的)用来做搜索,用户的备注、笔记、高亮存 redis 或者 es 或者也存文件,前端处理;做过一个类似微信公众号的项目,需要显示某个句子被 n 个人划线了,存的持久化的 redis |
![]() | 9 dream4ever OP |
![]() | 10 dream4ever OP @wyl986 啊,我刚发完消息就看见你的回复,感谢~ |
![]() | 11 c3de3f21 2024-08-01 17:07:29 +08:00 仅代表个人分析问题的思路,没有实践经验没有权威性和成熟落地的解决方案: 首先按照一本书来说必要的属性有什么?标题,作者,简介,目录,页码,脚注,还有您说到的各种媒体类型等等,如果能把这些信息全都分析出来,那么自然就可以分析 ER 图按照常规结构化存储了,但是感觉很困难,我会搜一下有没有适合存图书的引擎或者什么框架。 其次标注或者后期按照账号来自定义笔记呀类似 kindle 那种,在下分析出来的核心难点是 我如何知道用户在哪一段标了什么颜色做了什么注释,这些内容后续如何修改,我会分析到那一页的第几行的第几个字符到第几行的第几个字符截至,这就依赖于页码和段落,可能这种方式太复杂了,需要结构化存储到段落了。 上面的思路很难,我试图转变思路,如果用户的输入完毕的内容是一层蒙版叠加在了页上呢?那可能就涉及到了分辨率和修改等其他的问题。 专业的事情一定有专业的工具,于是我尝试搜索,搜到了 https://readium.org/ts-toolkit/ 这么个东西,了解到了定位器和 Parser ,还有 apache 的一个 apache tika 不知道能不能派上什么用场 |
12 wyl986 2024-08-01 17:09:32 +08:00 @dream4ever #9 搜索存个简化版的到 es 里面,后期还可以自己写分词器(我之前做过的是某专业领域方面的,存的文章主要是论文,涉及很多专业词汇,ik 的分词效果不是很好) |
![]() | 13 dream4ever OP @c3de3f21 多谢,我也去看看说的这些工具。 |
15 wyl986 2024-08-01 17:13:29 +08:00 @dream4ever #10 备注、笔记、高亮具体存 redis 还是 es 还是文件,主要看这些内容是否需要被其他用户看到、访问频率;文件存很简单,但是大量 io 的话就很容易出问题;最好还是存 redis ,操作起来方便、性能、速度都很好 |
16 wyl986 2024-08-01 17:17:48 +08:00 @c3de3f21 #14 你是说自己弄内容的分词器吗?还是单纯搜索分析文本?其实我感觉 meilisearch 现在也挺不错的 |
![]() | 17 malusama 2024-08-01 17:25:42 +08:00 不过现在相似内容搜索不是喜欢用模型类似 https://huggingface.co/BAAI/bge-m3 出段落的 embedding 么 |
![]() | 18 yy77 2024-08-01 17:25:53 +08:00 搞成 pdf 不成么? pdf 也有直接在网页上显示的法子。 |
![]() | 19 KisekiRemi 2024-08-01 17:56:52 +08:00 你这些数据可以存到云端 OSS 里然后抛出链接地址吧 |
20 Ayanokouji 2024-08-01 18:00:51 +08:00 |
![]() | 21 dream4ever OP @yy77 业务要求做成纯粹的网页端阅读,不考虑 PDF 了。 |
![]() | 22 bk201 2024-08-02 12:45:34 +08:00 如果要结构化存储的话,参考一下电子书的文档格式。 |
![]() | 23 itechify PRO 问个题外话,可以用 ES 存储吗? |