使用Solarium的Solr Json Facet API

时间:2018-08-26 13:16:17

标签: solr solarium

我正在一个PHP项目中,我正在使用Solarium作为与Apache Solr交互的主要库。

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

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

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

我在日光浴室Github Page上发现了一个已解决的问题,对此我感到关注。

JSON Facet API #378

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

2 个答案:

答案 0 :(得分:0)

我可以通过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应该以$ 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();
}

答案 1 :(得分:0)

要将Solr-JSON-facet添加到Solarium查询API,您需要创建一个Solarium facet集合对象。要使用stat构面函数(也称为聚合函数),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)');