4

为全文搜索执行索引的最有效方法是什么?

我使用 mongodb,但我认为这在这个问题的背景下并不那么重要

我正在考虑通过进一步索引来存储 draft.js 输出的两种方法:

  1. 将其转换为降价。这看起来很简单,全文搜索索引足够智能,可以在索引期间过滤掉所有的垃圾字符。但是,如果 markdown 这么好,draft.js 可能会将数据输出为 markdown 而不是块结构。因此,我认为按原样存储块一定有优势。
  2. 之后存储块,JSON.stringify并将每个块的所有“文本”属性作为纯文本存储在单独的文档属性(或 sql 的表列)中。因此,纯文本将仅用于索引,其余工作将由字符串化/解析的 JSON 完成。老实说,听起来不必要的复杂。

如果你们已经遇到过这种情况,是否对如何存储和索引这些数据有一些准确的建议?

这里有一些具体的例子:

Draftjs 编辑器示例

文本示例:

<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":{  

         }
      }
   ]
}
4

0 回答 0