solrのさまざまなファセットの数を取得する方法はありますか?
これはファセットの例です。
- カメラ:20
- コンピューター:80
- モニター:40
- ラップトップ:120
- タブレット:30
ここで取得する必要があるのは、5つの異なる電子アイテムのように「5」です。もちろん、ファセットを数えることはできますが、中には多くのアイテムが含まれているものがあり、それらをフェッチして数えると、実際に速度が低下します。
ファセットの個別のカウントを取得するには、 SolrパッチSOLR-2242を適用する必要があります。
SOLR 5.1では、関数「unique(state)」を備えた「JSONFacetAPI」になります。 http://yonik.com/solr-facet-functions/
この質問に対する正確な答えではありませんが、ファセットの個別のカウントが誰にとっても機能しない場合は、次を使用してその情報を取得できますgroup.ngroups
。
group = true
group.field = [field you are faceting on]
group.ngroups = true
このアプローチの欠点は、グループ化されていない結果が必要な場合、クエリを2回実行する必要があることです。
もちろんパッチをお勧めしますが、ここにあるように、単純なファセットに対してこれを行うための安っぽい方法は、ファセットの長さを2で割ったものを使用することですtype
。
facetCount = facet_counts.facet_fields.type.length/2
このGETリクエストを使用します。
http://localhost:8983/solr/core_name/select?json.facet={x:"unique(electronic_items)"}&q=*:*&rows=0