我无法在查询中添加构面。我试试
$query = new Query;
$query->facetBuilders = [ new \eZ\Publish\API\Repository\Values\Content\Query\FacetBuilder\FieldFacetBuilder];
services:
myservice:
class: mynamespace\FacetHandler
tags:
- {name: ezpublish.search.solr.content.facet_builder_visitor}
我收到了错误"故意没有实现:没有访问者可用于:eZ \ Publish \ API \ Repository \ Values \ Content \ Query \ FacetBuilder \ FieldFacetBuilder"
我也试过了标签" ezpublish.search.solr.content.facet_builder_visitor.aggregate"
我做错了什么?
答案 0 :(得分:0)
您需要移交要应用构面的字段。 在您的情况下,它可能如下所示:
$query = new Query;
$query->facetBuilders = [ new \eZ\Publish\API\Repository\Values\Content\Query\FacetBuilder\FieldFacetBuilder(
[
'fieldPaths' => 'article/title'
]
)];
"物品"是要过滤的类的类型标识符。如果没有类限制你可以实际使用它,我还没有尝试过。 "标题"定义用于构面的字段标识符。
您还可以使用regex
或sort
(除了fieldPaths
- 键来过滤和排序结果。
sort
的可能值在FieldFacetBuilder
- 类
希望这有帮助。
答案 1 :(得分:0)
按以下方式配置您的字段类
parameters:
ezpublish.search.solr.query.content.facet_builder_visitor.field.class: Your\Bundle\Query\Content\FacetBuilderVisitor\Field
按以下方式定义您的服务:
ezpublish.search.solr.query.content.facet_builder_visitor.field:
class: "%ezpublish.search.solr.query.content.facet_builder_visitor.field.class%"
tags:
- {name: ezpublish.search.solr.query.content.facet_builder_visitor}
实施你的课程
<?php
/**
*
*/
namespace Your\Bundle\Query\Content\FacetBuilderVisitor;
use EzSystems\EzPlatformSolrSearchEngine\Query\FacetBuilderVisitor;
use eZ\Publish\API\Repository\Values\Content\Query\FacetBuilder;
use eZ\Publish\API\Repository\Values\Content\Search\Facet;
/**
* Visits the Field facet builder.
*/
class Field extends FacetBuilderVisitor
{
/**
* CHeck if visitor is applicable to current facet result.
*
* @param string $field
*
* @return bool
*/
public function canMap($field)
{
return $field === 'field_id';
}
/**
* Map Solr facet result back to facet objects.
*
* @param string $field
* @param array $data
*
* @return Facet
*/
public function map($field, array $data)
{
return new Facet\FieldFacet(
array(
'name' => 'field',
'entries' => $this->mapData($data),
)
);
}
/**
* Check if visitor is applicable to current facet builder.
*
* @param FacetBuilder $facetBuilder
*
* @return bool
*/
public function canVisit(FacetBuilder $facetBuilder)
{
return $facetBuilder instanceof FacetBuilder\FieldFacetBuilder;
}
/**
* Map field value to a proper Solr representation.
*
* @param FacetBuilder $facetBuilder;
*
* @return string
*/
public function visit(FacetBuilder $facetBuilder)
{
return array(
'facet.field' => 'field_id',
'f.field_id.facet.limit' => $facetBuilder->limit,
'f.field_id.facet.mincount' => $facetBuilder->minCount,
);
}
}
现在不再例外;)但不起作用:&#39;(https://doc.ez.no/display/DEVELOPER/Browsing%2C+finding%2C+viewing#Browsing,finding,viewing-PerformingaFacetedSearch