我正在一个PHP项目中,我正在使用Solarium作为与Apache Solr交互的主要库。
我正在使用Solr的Json Facet API,如下所示:-
json.facet={"unique_docs":"unique(doc_id)","hll_docs":"hll(doc_id)"}
如何在Solarium中使用类似查询。
我在日光浴室Github Page上发现了一个已解决的问题,对此我感到关注。
但是,该页面没有说明其使用方式。在Solarium文档中也没有与此相关的内容。
答案 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)');