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 页面上找到了一个我关心的已解决问题。
但是,该页面没有说明使用方法。 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)');
我正在开展一个 PHP 项目,我在该项目中使用 Solarium 作为与 Apache Solr 接口的主要库。
我正在使用 Solr 的 Json Facet API,如下所示:-
json.facet={"unique_docs":"unique(doc_id)","hll_docs":"hll(doc_id)"}
如何在 Solarium 中使用类似查询。
我在日光浴室 Github 页面上找到了一个我关心的已解决问题。
但是,该页面没有说明使用方法。 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)');