1

私は5000万の製品のリストを持っています。各製品には 200 の機能のリストがあります。200 の機能間で最大の重複がある製品の機能を一致させることにより、類似の製品を探しています。

現在、200 語をスペースで連結し、長い文字列を形成しています。選択した特定の製品に類似した製品を見つけたい場合は、保存されている 200 語の長い文字列を取得し、elasticsearch を検索します。

これにより期待どおりの結果が得られますが、各検索には約 7 秒かかります。これは、検索フレーズが非常に長いためです。これを行い、elastic で最適なオーバーラップを見つけるより良い方法はありますか?

4

1 に答える 1

0

いくつかのことを確認/試してみることをお勧めします:

私は5000万の製品のリストを持っています。各製品には 200 の機能のリストがあります。200 の機能間で最大の重複がある製品の機能を一致させることにより、類似の製品を探しています。現在、200 語をスペースで連結し、長い文字列を形成しています。

Product が Doc タイプであると仮定すると、通常は機能を値の配列として保存し、フィールド データを有効にしてみてください。次に、集計を使用して、適切に言及された最大オーバーラップを適用してそれらをグループ化し、必要なものを取得するのは簡単です。はるかに高速になると強く信じています。

保存されている 200 語の長い文字列を取得し、elasticsearch を検索します。

すべての製品またはその他のドキュメント タイプの完全な応答ではなく、集計結果だけが必要な場合があります。この場合、検索タイプを count (古いバージョン) またはサイズ 0 の query_then_fetch (新しいバージョン) に設定すると、すべてのドキュメント タイプの初期フェッチと集計のみの取得。これは、要件に基づいていくつかの状況で使用できます。

Elasticsearch 環境が適切に準備されていることを確認してください。

最後に、この数のドキュメントを使用すると、デフォルトのケースよりも適したシャード/レプリカ構成が見つかる可能性があります。

于 2017-01-11T19:47:55.440 に答える