2017-01-22 8 views
2

フルテキスト検索のインデックス作成を行う最も効率的な方法は何ですか?Draft.jsの出力をデータベースに格納してインデックスする方法は?

私はMongoDBのを使用していますが、私はこれは私がさらにインデックスと出力draft.js格納するために、約2の方法を考えてい

この質問の文脈ではそれほど重要ではないと思います。

  1. 変換をマークダウンする。これはシンプルに見えますが、フルテキスト検索のインデックス作成は、インデックス作成中にすべてのガベージ文字をフィルタリングするのに十分なほどスマートです。しかし、マークダウンが非常に良いとすれば、draft.jsはブロック構造の代わりにマークダウンとしてデータを出力するでしょう。したがって、ブロックをそのまま保存すると利点があるはずです。
  2. JSON.stringifyの後にブロックを格納し、各ブロックのすべての「テキスト」プロパティを、分離されたドキュメントプロパティ(またはsqlのテーブル列)にプレーンテキストとして格納します。したがって、プレーンテキストはインデックス作成のためだけに存在し、残りの作業はストリング化/解析されたJSONによって行われます。不必要に複雑に聞こえる、正直である。

このような状況に遭遇した場合は、このデータの保存とインデックス作成の方法について正確なアドバイスがありますか?ここで

具体的には、いくつかの例:テキストの

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

     } 
     } 
    ] 
} 
+0

私はいくつかの例を追加しました: –

+0

@ RobertAnthonyS.Tribiana、アドバイスありがとうございました – stkvtflw

+0

私は推測するが、これは質問の一部を明確にするかもしれない:https: //github.com/facebook/draft-js/issues/422 – stkvtflw

答えて

0

生のブロックを節約しながら、んあなたが必要とするインデックス作成を行います。生ブロックのテキスト部分は非常にシンプルなので、どのプログラミング言語でも処理できます。

関連する問題