图书完整内容怎样存储在后端数据库中?

48 天前
 dream4ever

目前有一批图书的 InDesign 文件,需要把图书内容进行数字化处理,最终以在线图书的形式呈现。

现在已经从 InDesign 导出了 HTML + CSS + 图片,接下来需要把 HTML 的内容和图片上传到数据库,想问一下 HTML 的内容用什么样的数据结构存储比较合理?

其中 HTML 会有标题、正文、图片、表格、音视频、超链接等各种类型的内容。

另外还希望能够给图书使用不同的主题,比如主题一的 h1 用的某种字号和颜色,主题二的 h1 用另一种字号和颜色。

2608 次点击
所在节点    程序员
23 条回复
opengps
48 天前
直接作为文件存储,而不是用数据库存储
dream4ever
48 天前
@opengps 后期还需要实现各种读书软件常见的高亮、笔记之类的功能,作为文件存储的话,这类功能不方便实现吧?
yunv2
48 天前
@dream4ever 高亮、笔记单独保存,在前端回显的时候进行处理展示,而不是保存到图书原数据中
opengps
48 天前
在数据库存储本身是要额外一层格式转换的。
你取用数据的过程其实都是原始内容,然后加了某些处理操作,你存数据库要比直接存原始内容多一层转换格式过程,效率更低。
dream4ever
48 天前
@yunv2 这个肯定是要和图书原始数据分开保存的。
hahastudio
48 天前
我觉得这个问题跟视频索引类似,只不过可能因为图书文件小一些
RandomJoke
48 天前
书的内容感觉还是存文件合理些,你要实现的功能再用其他数据库。
比如书先丢到各种云存储中,path 入关系型数据库,做一些分类,收藏,标题搜索等内容。
后续的功能针对书 id 建立笔记,高亮内容等。比如 https://github.com/alienzhou/blog/issues/28
wyl986
48 天前
图书做文件存储,es 里面存个简化版的(纯文字,去掉 html 、图片的)用来做搜索,用户的备注、笔记、高亮存 redis 或者 es 或者也存文件,前端处理;做过一个类似微信公众号的项目,需要显示某个句子被 n 个人划线了,存的持久化的 redis
dream4ever
48 天前
@opengps
@yunv2
@RandomJoke 刚想起来个事,如果要做全文搜索,基于文件存储的方案是不是还得想办法再把图书的文字内容索引一遍放数据库……
dream4ever
48 天前
@wyl986 啊,我刚发完消息就看见你的回复,感谢~
c3de3f21
48 天前
仅代表个人分析问题的思路,没有实践经验没有权威性和成熟落地的解决方案:

首先按照一本书来说必要的属性有什么?标题,作者,简介,目录,页码,脚注,还有您说到的各种媒体类型等等,如果能把这些信息全都分析出来,那么自然就可以分析 ER 图按照常规结构化存储了,但是感觉很困难,我会搜一下有没有适合存图书的引擎或者什么框架。

其次标注或者后期按照账号来自定义笔记呀类似 kindle 那种,在下分析出来的核心难点是 我如何知道用户在哪一段标了什么颜色做了什么注释,这些内容后续如何修改,我会分析到那一页的第几行的第几个字符到第几行的第几个字符截至,这就依赖于页码和段落,可能这种方式太复杂了,需要结构化存储到段落了。

上面的思路很难,我试图转变思路,如果用户的输入完毕的内容是一层蒙版叠加在了页上呢?那可能就涉及到了分辨率和修改等其他的问题。

专业的事情一定有专业的工具,于是我尝试搜索,搜到了 https://readium.org/ts-toolkit/ 这么个东西,了解到了定位器和 Parser ,还有 apache 的一个 apache tika

不知道能不能派上什么用场
wyl986
48 天前
@dream4ever #9 搜索存个简化版的到 es 里面,后期还可以自己写分词器(我之前做过的是某专业领域方面的,存的文章主要是论文,涉及很多专业词汇,ik 的分词效果不是很好)
dream4ever
48 天前
@c3de3f21 多谢,我也去看看你说的这些工具。
c3de3f21
48 天前
@wyl986 老哥有没有什么专业的开源框架或者分析工具?
wyl986
48 天前
@dream4ever #10 备注、笔记、高亮具体存 redis 还是 es 还是文件,主要看这些内容是否需要被其他用户看到、访问频率;文件存很简单,但是大量 io 的话就很容易出问题;最好还是存 redis ,操作起来方便、性能、速度都很好
wyl986
48 天前
@c3de3f21 #14 你是说自己弄内容的分词器吗?还是单纯搜索分析文本?其实我感觉 meilisearch 现在也挺不错的
malusama
48 天前
不过现在相似内容搜索不是喜欢用模型类似 https://huggingface.co/BAAI/bge-m3 出段落的 embedding 么
yy77
48 天前
搞成 pdf 不成么? pdf 也有直接在网页上显示的法子。
KisekiRemi
48 天前
你这些数据可以存到云端 OSS 里然后抛出链接地址吧
Ayanokouji
48 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1061787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX