如何在数据库中存储和索引Draft.js输出?

时间:2017-01-22 15:52:43

标签: mongodb full-text-search draftjs database

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

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

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

  1. 将其转换为markdown。这看起来很简单,全文搜索索引足够智能,可以在索引期间过滤掉所有垃圾字符。但是,如果markdown非常好,draft.js可能会输出数据作为markdown而不是block结构。因此,我认为存储块必须具有优势。
  2. JSON.stringify之后存储块并存储所有"文本"每个块的属性作为分隔文档属性中的纯文本(或sql的表列)。因此,纯文本将只用于索引,其余的工作将由字符串化/解析的JSON完成。听起来不必要地复杂,诚实。
  3. 如果您已经遇到过这种情况,可能您对如何存储和索引此数据有一些准确的建议?

    这里有一些具体的例子:

    Example of draftjs editor

    文字示例:

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

1 个答案:

答案 0 :(得分:0)

保存原始块时,请执行您需要的任何索引。原始块中的文本部分非常简单,因此您可以使用任何编程语言进行处理。