4

デフォルトでは、Solr はフィールドのファセットを返します。その後、そのフィールドのファセット値を選択すると、以前の選択はすべて、そのフィールドのファセットの一部として返されなくなります。

私は、Amazon の検索エンジン (独自の A9 検索エンジンに基づいているため、おそらく Amazon CloudSearch に似ている) のように機能する検索エンジンを開発しようとしています。

Amazon 検索でいくつかの「ファセット」に絞り込むと、その領域を検索に追加する場合は、カウントとともに他のオプションが引き続き表示されます。

Solrでこれを行う組み込みの方法はありますか? そうでない場合、どうすれば自分で転がすことができますか。明らかに、フィールドに対して返された元のファセットをキャッシュする必要があります。しかし、フィールドの 1 つ (または複数) のファセットを既に選択したら、他のファセット領域のカウントを計算する最も効率的な方法は何でしょうか。明らかに、追加のファセットが選択されている場合は、2 つの値のいずれかで物事を表示しようとしているため、これらの値の間で「OR」クエリを実行しています。

たとえば、Amazon のジュエリー部門でダイヤモンド リングを検索し、金属の種類としてゴールドに絞り込みました。その後、複数のカラット ファセットを選択できました。

Amazon ファセットの例

Solrでこれを(効率的に)行う方法の例を誰かが提供できますか?

また、Solr の将来のバージョンで、この機能をすぐに利用できるようにする機能はありますか (まだパッケージに入っていないと仮定します)。

4

2 に答える 2

7

Tagging and excluding FiltersSolr の機能は、探している機能である可能性があります。これは、Multi Select Facetingを説明する Wiki リンクです。

例: : ../solr/select/?q=*&rows=0&facet=on&fq={!tag=krt}KARAT:10k_Gold&facet.field={!ex=krt}KARAT

この機能はSolr 1.4以降に存在すると思います。

于 2012-10-16T20:27:45.273 に答える
3

Solr の新しい JSON Facet API を使用した複数選択ファセットの動作は少し異なります。同じ方法でフィルターにタグを付けますが、除外構文が異なります。

&q="running shorts"
&fq={!tag=COLOR}color:(Blue Black)
&json.facet={
      sizes:{type:terms, field:size},
      colors:{type:terms, field:color, domain:{excludeTags:COLOR} },
      brands:{type:terms, field:brand, domain:{excludeTags:BRAND} }
}

青または黒のアイテムを選択しているフィルターの tag=COLOR に注意してください。色をファセットするときは、そのタグを持つフィルターを無視 (または除外) して、他の色のカウントを取得できるようにします。それが domain:{excludeTags:COLOR} の機能です。

この例は、 http: //yonik.com/multi-select-faceting/から取得したものです。

于 2015-11-25T17:31:00.920 に答える