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)"}

如何将类似查询与日光浴室一起使用。

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

JSON Facet API #378

但是,该页面没有解释使用它的方式。在日光浴室文档中也没有与此相关的内容。

我让它与自定义请求一起工作:

$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);

有一个版本应该支持类似 $facetset->createJsonFacetTerms($options( 的 API,但我从未设法让它像它应该的那样工作,也找不到任何文档。

为了在请求执行后获取 json 方面,我有这样的东西:

$facet_result = $this->result_set->getFacetSet()->getFacet('my_key');
foreach($facet_result as $facet) {
$value = $facet->getValue();
$count = $facet->getCount();
}

要将 Solr-JSON facet 添加到 Solarium 查询 API,您需要创建一个 Solarium facet set 对象。要使用统计信息分面函数(也称为聚合函数(,Solarium 提供了创建和设置查询的方法。

所以这应该做你想要的:

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

最新更新