如图所示,左边是用户的文档,右边是针对文档一部分文字的批注,请问批注的位置信息在数据库中怎么存储合适?
批注类似于类似于 pdf / Google doc / 腾讯文档的批注,其它用户可以对文档中一个片段写下评语。
我的问题是:用户的文档是会持续更新的,导致批注的位置信息随时都在变化,因此我不知道在数据库中应该如何存储批注的位置信息。
假设我存储批注对应文字 行+列,一旦某处文档有增减,必须调整后面所有批注的位置,我感觉这样开销会很大吧?
假设我存储批注对应的文字部分,那批注对应的文字也可能删减/变化。
不知道有没有更高效的方法存储批注的位置,这个需求在腾讯文档等在线文档编辑器里应当很普遍。
1
sillydaddy 201 天前 via Android
对,感觉这应该是一个很普遍的需求。我的想法是把文档拆分成小段,比如每个小段用一个 id 标识。整个文章就是小段按顺序组合成的。小段的定义,可以根据文档的特点来确定,比如可以使用自然段落,也可以定义一段就是 100 个字。
修改文字的话,找到修改的对应小段,然后用相对位置表示修改的内容,比如第 5 小段的第 8 个字到第 10 个字替换为 xxxxx 。在这个范围内的标注也要更新。 |
2
Li83Xi7Gai4 201 天前
想一想 git 是怎么存提交记录的
|
3
zhangxh1023 201 天前
存标签?瞎猜的想法,比如存:
<!批注>这是<!批注>一段<!批注: 两个字儿的批注>文本<!批注: 文本的批注 xxxxx> |
4
aijam 201 天前 1
文本存成这个形式:
some text <comment id="xxxx">highlight text</comment> more text. comment 数据库正常存 id -> comment 内容 |
5
jinliming2 201 天前 via iPhone 1
有没有一种可能,批注不是单独存的,而是直接嵌入在文章里的?只不过在展示的时候抽取到右边而已?
比如参考某些论坛的语法可以这样表示: [加粗]加粗文案[/加粗][批注:批注内容]批注文案[/批注] |
6
llllllllyyyyyy 201 天前
@zhangxh1023 感觉靠谱
|
7
jucelin 201 天前
如果做的粗一点:每次修改都是新的,没批注的。批注是上个版次的,毕竟批注和内容直接相关的
|
8
justdoit123 201 天前
感觉 @aijam 的思路干净一点。
|
11
BurNIng1988 201 天前
@aijam 嵌套的评论你们是设计成什么样的,把小段拆分吗?
|
12
isSamle 201 天前
你可以试下用 WPS 把 Word 转 html ,你会发现 doc 的批注就是类标签,每标注一小段就是给这段字加前后标签
|
14
aijam 200 天前
@cdswyda 那 end tag 也要加 id ,那就不符合 xml 标准。为防误导,可以自定义一种格式。比如
{start_comment:123}some highligted text{end_comment:123} 之类的 |
15
fwh 200 天前
w3c 有一个 web 注释模型标准 https://www.w3.org/TR/annotation-model/
这里有个开源的 js 实现 https://github.com/recogito/recogito-js |
16
hedwi 200 天前
这种可以看一下 word 的结构 按照 word 的存储方式就行 找个 word 解析库看下
|