2012-01-04 12 views
46

SOLR docs VSフィルタクエリ、フィルタはを照会する状態は、メインクエリとは異なり、文書のスコアに影響を与えません。誰でもこれが正確に何を意味するのかを説明することができます。SOLRメイン・クエリ

ありがとうございました。

答えて

48

FilterQueryには、ドキュメントIDSのみが格納されます。これにより、フィルタを適用/除外するドキュメントに適用するのが非常に高速になります。たとえば、国、製品タイプ、在庫などの検索結果から商品をフィルタリングする場合です。

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

だから、私は照会することができます:

description:Kohler AND productType:Toilet 

それとも私が照会できます。

description:Kohler 
with a FQ of productType:Toilet 

結果は同じになりますが、スコアは異なるだろう。また、1日を通してproductType:Toiletの多くの異なるクエリを取得した場合、FilterQueryがキャッシュされて全体のクエリ時間が短縮されます。

+1

たとえば、 "productType"で用語昇格が行われている場合、mainTypeではなくFilterQueryでproductTypeが設定されていると、結果が異なるように並べ替えられるため、クエリに含まれている場合、高いProductTypeスコアが上部に表示されますが、FilterQuery内にある場合は、ProductQueryの中にあるためスコアが適用されないためproductTypeスコアの高いドキュメントが最下部に表示されます。私はあなたのことを正しく理解していますか? – mrd3650

+0

正しい。ただし、main句にproductTypeをAND句として入れると、とにかく他のproductTypesは返されません。これは限られた価値があるかもしれません。しかし、あなたが言ったことは、それがどのように機能するのか理解していることを意味します。 – rfeak

+0

はい、私は誤ってproductTypeのFTSを想定していたため、ポイントがあります(したがって複数のproductTypeが返される可能性がありますが、通常は* TypeにFTSはありません)。ありがとう。 – mrd3650

3

fqは固定値のリストを対象としています。 q = sunroof + stereoとqq = stereo + sunroofが同じ結果セットを返すので、q = sunroof + stereoとfq = Mustang solrで検索すると、qパラメータのテキスト分析が行われます。しかし、fqで検索をフィルタリングするときは、fqパラメータに適用される解析はなく、返されるすべてのドキュメントはfqと一致すると見なされるので、一致するドキュメントのスコアを変更する必要はありません。