全文検索のインデックス作成を実行する最も効率的な方法は何ですか?
私はmongodbを使用していますが、これはこの質問の文脈ではそれほど重要ではないと思います
私は、draft.js の出力をさらにインデックス付けして保存する 2 つの方法を考えています。
- マークダウンに変換します。これは単純に見えますが、フルテキスト検索のインデックス作成は、インデックス作成中に不要な文字をすべて除外するほどスマートです。ただし、マークダウンが非常に優れている場合、draft.js はデータをブロック構造ではなくマークダウンとして出力する可能性があります。したがって、ブロックをそのまま保管することには利点があるに違いないと思います。
- 後でブロック
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":{
}
}
]
}