Solr Json Facet API 使用 Solarium

Solr Json Facet API using Solarium

我正在开展一个 PHP 项目,我在该项目中使用 Solarium 作为与 Apache Solr 接口的主要库。

我正在使用 Solr 的 Json Facet API,如下所示:-

json.facet={"unique_docs":"unique(doc_id)","hll_docs":"hll(doc_id)"}

如何在 Solarium 中使用类似查询。

我在日光浴室 Github 页面上找到了一个我关心的已解决问题。

JSON Facet API #378

但是,该页面没有说明使用方法。 Solarium 文档中也没有与此相关的内容。

我使用 customizerequest 得到它:

$facet_json = '{my_key:{type:terms,field:my_solr_field_name,domain:{blockChildren:"my_parent_filter:1"}}}';

$customizer = $this->client->getPlugin('customizerequest');
$customizer->createCustomization('json.facet')
    ->setType('param')
    ->setName('json.facet')
    ->setValue($facet_json);

有一个 release 应该支持 API 类似 $facetset->createJsonFacetTerms($options) 但我从来没有设法让它像它应该的那样工作并且找不到任何文档。

要在执行请求后获得 json 方面,我有这样的事情:

$facet_result = $this->result_set->getFacetSet()->getFacet('my_key');

foreach($facet_result as $facet) {
    $value = $facet->getValue();
    $count = $facet->getCount();
}

要将 Solr-JSON-facet 添加到 Solrium 查询 API,您需要创建一个 Solrium facet 集对象。要使用 stat facet 函数(也称为聚合函数),Solarium 提供了创建和设置查询的方法。

所以这应该可以满足您的要求:

$query = new \Solarium\QueryType\Select\Query\Query();
$query->getFacetSet()
    ->createJsonFacetAggregation('unique_docs') // the JSON key
    ->setFunction('unique(doc_id)'); // the aggregate function (JSON value)
    ->createJsonFacetAggregation('hll_docs')
    ->setFunction('hll(doc_id)');