我正在使用Solr + Solarium。我已經定義了多方面搜索。每個方面選項都有其後的計數器,顯示點擊它們時返回結果的數量。Solr +日光浴室:計數器不適用於多個選擇方面
當在多選方面中選擇一個選項時,我希望其他方面的計數器仍然有效。
有在solr的結果。在我的舊代碼(單一選擇方面)中,它返回了汽油/柴油的值。
E.g.以下2個方面:
汽車品牌: -volvo(3) -mazda(2) -volkswagen(5)
燃料: -Diesel(4) -Petrol(6)
現在我想能夠選擇沃爾沃和馬自達。選擇沃爾沃的solr /日光浴之後返回以下2個方面:
商標: -volvo(3) - 選擇 -mazda(2) -volkswagen(5)
燃料: -Diesel(0 ) -Petrol(0)
品牌方面很好。我希望Fuel facet counter能夠從volvo中返回柴油/汽油車的數量。 E.g: -Diesel(2) -Petrol(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/>';
}
這不可能是你正在使用的實際代碼,有語法錯誤和怪異的東西,所有的地方。如果你有一個樣本.json文件和你用於測試的模式,那也是很有用的。 – MatsLindh