3

書籍に関するデータセットがあり、それぞれが 1 つ以上の言語である可能性があります。すべてのユーザーは、1 つ以上の言語を持っているものとして登録されています。

ユーザーが本を検索するとき、すべての言語を理解できる本だけを返したいと思います。

たとえば、次の 2 つの本がシステムにあります。

Book A: English, French, German
Book B: English, Greek

John が英語、ドイツ語、フランス語、およびイタリア語を知っていると登録されている場合、彼のクエリ結果には Book B が含まれることはありません。

私のシステムは現在Apache Solrを使用して書かれており、最終的にサブセット操作を実行するプラグインを作成しました (レコードの言語がユーザーの言語のサブセットである場合にレコードが一致し、ユーザーの言語がクエリ)。

ただし、 Elasticsearchバックエンドに移行したいと考えています。ただし、この特定のサブセット動作は、コア フィルター パッケージの一部ではないようです。何か不足していますか、それとも同様のプラグイン/カスタム フィルターの作成を検討する必要がありますか?

4

2 に答える 2

1

これは、スクリプト フィルターを使用して実行できます。パラメーターとして文字列のコンマ区切りリストを渡し、for ループを使用して各コンポーネントが確実に含まれるようにすることができます。現在のすべてのループが終了し、true を返す場合。

これがどれほど効率的かはわかりませんが、理論的にはこれはelasticsearchで実行できます。理想的には、最適化されたフィルターを適用して本のセットを絞り込み、それらのサブセットでこれを実行します結果がキャッシュされ始めると、このフィルターのパフォーマンスが向上するため、一連のクエリでテストするのが理想的です

于 2015-04-27T18:44:19.810 に答える