web-dev-qa-db-ja.com

SOLRフィルタークエリとメインクエリ

SOLR docsメインクエリとは異なり、フィルタークエリはドキュメントスコアに影響しないことを明記。誰でもこれが何を意味するのか、できれば例を挙げて説明できますか?.

ありがとう。

51
mrd3650

FilterQueryはドキュメントIDのみを保存します。これにより、ドキュメントを含める/除外するためにフィルターを非常に高速に適用できます。これの良い例は、国、製品タイプ、在庫状況などに基づいて検索から製品をフィルタリングする場合です。

通常のクエリでもまったく同じ機能を実行できますが、「関連性」を判断するための非常に複雑なスコアリングシステムがあります。ドキュメントは、スコアリングがフィルタークエリではなくメインクエリでのみ行われることを示していると思います。これにより、クエリの速度も向上します。

だから、私は以下を照会できます:

description:Kohler AND productType:Toilet

または、次のクエリを実行できます。

description:Kohler
with a FQ of productType:Toilet

結果は同じになりますが、スコアは異なります。また、1日を通してproductType:Toilet、FilterQueryがキャッシュされ、全体的なクエリ時間が短縮されます。

55
rfeak

fqは、値の固定リストを対象としています。 q = sunroof + stereoおよびfq = Mustang solで検索すると、q = sunroof + stereoおよびq = stereo + sunroofは同じ結果セットを返すため、solrはqパラメーターでテキスト分析を行います。ただし、fqを介して検索をフィルタリングする場合、fqパラメーターに分析は適用されず、返されるすべてのドキュメントがfqに一致すると想定されるため、一致するドキュメントのスコアを変更する必要はありません。

4
d whelan