为全文搜索执行索引的最有效方法是什么?
我使用 mongodb,但我认为这在这个问题的背景下并不那么重要
我正在考虑通过进一步索引来存储 draft.js 输出的两种方法:
- 将其转换为降价。这看起来很简单,全文搜索索引足够智能,可以在索引期间过滤掉所有的垃圾字符。但是,如果 markdown 这么好,draft.js 可能会将数据输出为 markdown 而不是块结构。因此,我认为按原样存储块一定有优势。
- 之后存储块,
JSON.stringify
并将每个块的所有“文本”属性作为纯文本存储在单独的文档属性(或 sql 的表列)中。因此,纯文本将仅用于索引,其余工作将由字符串化/解析的 JSON 完成。老实说,听起来不必要的复杂。
如果你们已经遇到过这种情况,是否对如何存储和索引这些数据有一些准确的建议?
这里有一些具体的例子:
文本示例:
<p>First line of text</p>
<h1>A header</h1>
<p>text and one <strong>BOLD</strong> word</p>
Draft.js 输出:
{
"entityMap":{
},
"blocks":[
{
"key":"4vno8",
"text":"First line of text",
"type":"unstyled",
"depth":0,
"inlineStyleRanges":[
],
"entityRanges":[
],
"data":{
}
},
{
"key":"dr3c5",
"text":"A header",
"type":"header-one",
"depth":0,
"inlineStyleRanges":[
],
"entityRanges":[
],
"data":{
}
},
{
"key":"c5ndf",
"text":"text and one BOLD word",
"type":"unstyled",
"depth":0,
"inlineStyleRanges":[
{
"offset":13,
"length":4,
"style":"BOLD"
}
],
"entityRanges":[
],
"data":{
}
}
]
}