私は、複数のフィールドを持つ〜50Kのドキュメントを含むインデックスを持っています。フィールドの1つは、テキストを含む「コンテンツ」(わずかな単語または非常に大きな記事であり得る)である。 文書全体には、「内容」フィールドに関して多くの重複があります。 「コンテンツ」のどのグループに属するかを示すgroup_idフィールドを追加したいと思います。elasticsearchで正確な全文検索を見つけよう
私は "match"と "more_like_this"を使ってみましたが、正確な重複を返すようには見えませんでしたが、ほぼ重複したものを返すようです。
例:私は取得したいと思い
{ "author": "name1", "content": "text1" }, { "author": "name2", "content": "text2" } { "author": "name3", "content": "text1" } { "author": "name4", "content": "text2" } { "author": "name5", "content": "text3" }
: は、次のインデックスを指定する
{ "author": "name1", "content": "text1", "group_id: 0 }, { "author": "name2", "content": "text2", "group_id: 1 } { "author": "name3", "content": "text1", "group_id: 0 } { "author": "name4", "content": "text2", "group_id: 1 } { "author": "name5", "content": "text3", "group_id: 2 }
感謝を!
良いアイデアのように見えますが、試してみます。ところで、なぜダイジェストを文字列ではなく数値(例えばmd5)にするのが理にかなっていますか? – Eitan
すべてのダイジェストは数値から始まります。ビット(md5の場合は128)の束です。文字列表現にエンコードして、読みやすく/印刷可能にします。したがって数値を維持することは、値を表現するためのよりコンパクトな方法です。格納、索引および検索の効率が向上します。 Murmur3の32ビット版を例に取ってみましょう。数値的に格納するには、32ビット(すなわち4バイトまたは1つの長さ)が必要です。最もコンパクトな*印刷可能な表現が可能な文字列にエンコードするには、base85(40ビット、5バイト) base64(44ビットは6バイトであるため48にパディングされます)。 –
お返事ありがとうございました! (アップカウントはまだカウントされていません) – Eitan