Solr + Solarium を使用しています。マルチファセット検索を定義しました。各ファセット オプションの背後にはカウンターがあり、クリックすると返された結果の数が示されます。
複数選択ファセット内でオプションを選択すると、他のファセットのカウンターが引き続き機能することが期待されます。
solr に結果があります。私の古いコード (単一選択ファセット) では、ガソリン/ディーゼルの値が返されました。
たとえば、次の 2 つのファセット:
車のブランド: -volvo (3) -mazda (2) -volkswagen (5)
燃料: -ディーゼル (4) -ガソリン (6)
ボルボとマツダを選択できるようになりたいと思います。Volvo solr/solarium を選択すると、次の 2 つのファセットが返されます。
ブランド: -ボルボ (3) -選択された -マツダ (2) -フォルクスワーゲン (5)
燃料: -ディーゼル (0) -ガソリン (0)
ブランドファセットは良いです。Fuel ファセット カウンターが volvo のディーゼル/ガソリン車の数を返すことを期待します。例: -ディーゼル (2) -ガソリン (1)
私のコード:
$exclude= array("brand");
$q_brand = id_brand:volvo
$q_fuel = "";
// create a client instance
$client = new Solarium_Client($config);
// get a select query instance
$query = $client->createSelect();
$query->createFilterQuery(array('key'=>'id_brand', 'query'=>'$q_brand', 'tag'=>'brand'));
$query->createFilterQuery(array('key'=>'id_fuel', 'query'=>'$q_fuel', 'tag'=>'fuel'));
// get the facetset component
$facetSet = $query->getFacetSet();
$facetSet->createFacetField('id_brand')->setField('id_brand')->setExcludes($exclude);
$facetSet->createFacetField('id_fuel')->setField('id_fuel');
// this executes the query and returns the result
$resultset = $client->select($query);
// display facet counts
echo '<hr/>Facet counts for field "id_brand":<br/>';
$facet = $resultset->getFacetSet()->getFacet('id_brand');
foreach ($facet as $value => $count) {
echo $value . ' [' . $count . ']<br/>';
}
// display facet counts
echo '<hr/>Facet counts for field "id_fuel":<br/>';
$facet = $resultset->getFacetSet()->getFacet('id_fuel');
foreach ($facet as $value => $count) {
echo $value . ' [' . $count . ']<br/>';
}