9

これが可能かどうかはわかりませんが、ファセットに対して返されるカウントを、単に含めたり除外したりするだけでなく、より厳密に制御できるようにしたいと考えています。

具体的には、ユーザーが「facetA」と「facetB」でフィルタリングできるようにするインターフェイスがあります。ちょっとこんな感じ

  フィルタ条件
    - facetA: 記事 (20)、画像 (6)、活動 (14)
    - facetB: 猫 (23)、犬 (12)、ハリネズミ (5)

このインターフェースにより、facetA が facetB よりも高い階層にあることが明確になります。facetA カウントを完全に永続化し、facetB カウントも永続化しますが、facetA の選択に依存します。

そのため、インターフェイスは facetB への変更に次のように反応する可能性があります。

  フィルタ条件
    - facetA: 記事 (20)、画像 (6)、活動 (14)
    - facetB: 猫 (23)、犬 (12)、ハリネズミ (5)

つまり、カウントは変化しません。

しかし、facetA の変更には次のように反応します。

  フィルタ条件
    - facetA:    記事 (20)、画像 (6)、活動 (14)
    - facetB: 猫 (15)、犬 (4)、ハリネズミ (1)

つまり、facetB カウントは、facetA フィルターが適用された後に使用できるものを反映するように変更されます。

やってるだけ

&facet.field={!ex=dt}fieldA&facet.field={!ex=dt}fieldB

私が望むものは達成されませんが、近いです。これに関するsolr wikiの指示は非常に曖昧であることがわかりました-「dt」が何を表しているのかさえわからないようです。誰でも詳しく説明できますか?カウントを除外する方法をより細かく制御できますか?

4

2 に答える 2

11

わかりました、私はこれを理解しました。「dt」はユーザー指定のタグで、{!tag=*} ステートメントを使用して設定され、{!ex=} ステートメントを使用して参照されます。

したがって、クエリに次を追加すると、上記の例は修正されます。

&fq={!tag=tagA}fieldA:facetASelection
&fq={!tag=tagB}fieldB:facetBSelection
&facet=true
&facet.field={!ex=tagA}fieldA
&facet.field={!ex=tagB}fieldB

これは、facetA の選択 (fq) が facetA のカウントに影響せず、facetB の選択 (fq) が facetB のカウントに影響しないことを意味します。

甘い!必要な情報を得るために複数のクエリを送信することをほとんど諦めていました。

于 2011-08-04T01:51:24.913 に答える
3

ありがとう。この回答により、ほぼ1日節約できました。

基本的に私はhttp://wiki.apache.org/solr/SimpleFacetParametersieの例に従っていました

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype

したがって、複数のファセットがある場合でも{!tag=dt} & {!ex=dt}、両方のファセットで使用します。

注:正しく指摘dtされているのは、そのファセットで使用されるユーザー定義タグです。したがってdt、両方のファセットに使用すると、期待される応答が得られません。

代わりに =>'dt1' & 'dt2'複数のファセットに ... を使用するか、上記の使用例で説明したよう'tagA''tagB'....

前回の投稿に再度感謝します。

于 2012-07-20T10:15:46.783 に答える