2017-08-16 12 views
3

ElasticSearch 5.5.0では、「more_like_this」という句を使用していましたが、関連するドキュメントを見つけることはできませんでした。 ElasticSearchには以下のデータがあり、 "description"フィールドにはサイズが100万を超える巨大な非インデックスデータがあります。下のように私は1万の文書を持っています。どのように私はお互いに少なくとも80%一致しているドキュメントのセットを見つけ出すことができます終わりElasticSearch 5.5.0:関連ドキュメントの検索

{ 
    "_index": "school", 
    "_type": "book", 
    "_id": "1", 
    "_source": { 
     "title": "How to drive safely", 
     "description": "LOTS OF WORDS...The book is written to help readers about giving driving safety guidelines. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. LONG...." 
    } 
} 

を、私はIDの少なくとも80%の一致する内容を持っている文書のリストを探しています。可能性のある予想される結果は、(任意の形式で結構です)に一致する文書IDを含む:

[ [1,30, 500, 8000], [2, 40, 199], .... ] 

私はバッチを書いて、他のすべてと、各文書を比較し、出力セットを構築する必要がありますか?

助けてください。

+0

誰かが助けることができますか? –

+0

内容に一致するものは何ですか?すべてのフィールドまたはいくつかの選択フィールド?デッドロックロジックをいくつか構築したいのですか?私はあなたがコードやロジックで、すべてのドキュメントを反復処理する必要があるのではないかと恐れています。 –

+0

各書籍の「説明」フィールドと利用可能なすべての10,000書籍の「説明」フィールドを比較します。 80%一致する本を見つける必要があります。 –

答えて

2

more like this queryにはminimum_should_matchというパラメータがあり、これは80%に設定できます。ただし、ここではmax_query_termsパラメータも考慮する必要があります。

最も重要なことに、このonlsは、これらのフィールドの内容にインデックスを付けると機能します。

また、クエリ時にこれを行うのは、実際には遅い操作のように聞こえます。ここで戦略を再考し、索引時間にドキュメントをクラスタ化/グループ化したい場合があります(これは非常にカスタマイズされたものですから、自分で行う必要があります)ので、検索が高速になります。

+0

ありがとう@alr、あなたの応答をありがとう。私はすでにminimum_should_matchを80%に適用していますが、それは非常に大きな文字列なので、マッチングは正しくないようです。 10,000文書の場合、1台のマシンで負荷を処理できると思います。他に提案はありますか? –

+1

@NikhilJoshi - 答えは、あなたは 'max_query_terms'を見る必要があると言いました - あなたはそのパラメータを増やしてみましたか? 'max_query_terms'は、文書中の_unique_項の数に関連しています(文書の長さではありません)。 (データのインデックス化されていないサイズにはそれほど重要ではありませんが、運が良ければ、あなたが思っているよりも少なくなるかもしれないユニークな用語が何個あるかが重要です) – dshockley

+0

maxQueryTermsの値を100に設定しました。つまり、文書に一致する75語しかない場合、無視されますか? –

関連する問題