我正在使用 Solr + Solarium。我已经定义了一个多方面搜索。每个方面选项后面都有计数器,当您单击它时显示返回结果的数量。
在多选方面选择一个选项时,我希望其他方面的计数器仍然有效。
solr 有结果。在我的旧代码(单选方面)中,它返回汽油/柴油的值。
例如以下 2 个方面:
汽车品牌:-volvo (3) -mazda (2) -volkswagen (5)
燃料:-柴油(4)-汽油(6)
现在我希望能够选择沃尔沃和马自达。选择沃尔沃 solr/solarium 后,返回以下 2 个方面:
品牌:-沃尔沃(3)-精选-马自达(2)-大众(5)
燃料:-柴油(0)-汽油(0)
品牌方面很好。我希望燃料方面的计数器能够从沃尔沃返回柴油/汽油车的数量。例如: -柴油 (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/>';
}