10

/select/?q=*:*&rows=100&facet=on&facet.field=category

約100000のドキュメントにインデックスが付けられています。しかし、rows=100を使用して返すドキュメントは100個だけです。カテゴリに対して返されるファセットカウント。ただし、インデックス付けされたすべてのドキュメントのカウントが返されます。

ファセットを返される結果セットに制限することはできますか?つまり、100行のみですか?

4

4 に答える 4

6

パスカルが指摘したように、直接的な方法では不可能だと思います。

これを達成するための2つの方法がわかります。

  1. 方法I:返された100個の結果にアクセスして自分でカウントします。これは、カテゴリフィールドの場合は非常に簡単で高速ですが、トークン化が必要なテキストフィールドの場合などは困難です。

  2. 方法II:2つのパスを実行します。

    1. ファセットなしで通常のクエリを実行します(この時点でドキュメントIDを要求するだけで済みます)
    2. 返されたドキュメントのすべてのIDを収集します
    3. すべてのフィールドとファセットに対して2番目のクエリを実行し、結果をsetp2で収集されたIDに制限するフィルターを追加します。
      select/?q=:&facet=on&facet.field=category&fq=id:(312 OR 28 OR 1231 ...)

1つ目ははるかに効率的であり、テキスト以外のファイルにはお勧めします。2つ目は計算コストが高くなりますが、すべてのタイプのodフィールドで機能するという利点があります。

于 2011-06-29T14:45:41.463 に答える
2

申し訳ありませんが、それは不可能だと思います。ファセットは常に、クエリに一致するすべてのドキュメントに基づいています。

于 2010-10-28T20:24:40.073 に答える
0

本当の答えではありませんが、おそらく何もないよりはましです:結果のグループ化機能(トランクからチェックアウトしてください!):

http://wiki.apache.org/solr/FieldCollapsing

ここで、facet.field=categoryはgroup.field=categoryに似ており、指定した数のグループ('ファセットヒット')のみを取得します。

于 2010-11-03T10:19:31.250 に答える
0

常に同じクエリを実行する場合は、(q=*:*)次のようにfacet.limitを使用できます。

select/?q=*:*&rows=100&facet=on&facet.field=category&facet.limit=100

solrが使用する順序がファセットでクエリと同じであるかどうかを教えてください

于 2010-11-15T17:14:15.553 に答える