1

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/>';
    }
4

1 に答える 1