jlchassaing/facetbundle

GieFacetBundle是一个帮助创建搜索分面的工具集,并使用这些分面执行Solr查询。

安装: 187

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 0

类型:ezplatform-bundle

v1.0 2020-09-15 06:34 UTC

This package is auto-updated.

Last update: 2024-09-13 19:38:08 UTC


README

Build Status Code Coverage Latest stable License

Gie Facet Bundle

此捆绑包将帮助您执行和检索分面搜索。

如何使用它

1. 初始化分面搜索助手

在您的控制器操作中,只需调用gie.facet.search.helper即可。

默认情况下,此捆绑包中设置了两个分面搜索助手

  • ContentTypeFacetSearchHelper,别名为content_type
  • TagsFacetSearchHelper,别名为tags,基于netgen/tagsbundle

调用分面搜索助手后,您需要使用两个参数调用init方法

  • 一个包含分面FacetConfig对象的数组
  • 当前请求

FacetConfig对象是通过分面助手别名、标题和分面参数数组构建的

solr_field分面可以根据field参数定义的任何Solr字段对查询进行分面。格式化函数可以帮助格式化用户显示的值

init方法还将检查queryString并初始化选定的分面。如果您不希望这样做,可以避免传递请求对象。然后使用setFacetFilters()方法设置所需的任何选定的分面。

$facetSearchHelper = $this->container->get('gie.facet.search.helper')
                                     ->init(new FacetConfig('Content types', 
                                                             ContentTypeFacetSearchHelper::class,
                                                             [
                                                            'minCount' => 2,
                                                            'limit' => 5,
                                                            ]),
                                            new FacetConfig('Key Words',
                                                             TagFacetSearchHelper::class,
                                                             [
                                                            'minCount' => 1,
                                                            'limit' => 5,
                                                            ]),
                                            new FacetConfig('custom_date',
                                                            'Publication date'),
                                            new FacetConfig('solr_field',
                                                            'Year',
                                                            ['field' => 'meta_year_date_dt',
                                                             'format' => function($value){
                                                             $date = new \DateTime($value);
                                                             return $date->format('Y');}
                                                            ]),
            ], $request);

2. 构建查询

完成后,构建您的查询,不要添加任何分面或过滤器条件,并将其传递给分面助手。

 $query = $facetSearchHelper->addQueryFacets($query);

3. 获取要发送到模板的分面数组

在更新查询以包含分面设置和最终选定的分面中的过滤器后,您需要调用getFacets方法来获取分面数组。

1. 使用PagerFanta

如果您需要PagerFanta工具,则可以将其传递给分面助手。

当使用PagerFanta时,您必须使用捆绑包ContentSearchAdapter,否则您将无法从正在执行的查询中获取分面。

use Gie\FacetBuilder\Pagination\Pagerfanta\ContentSearchAdapter;
$facets = $facetSearchHelper->getFacetsFromPager($pager);

2. 从QueryResult

如果您只是使用ContentQuery,则可以将结果传递给分面助手并调用

$facets = $facetHelper->getFacetsFromQuery($queryResult);

4. 将分面传递到模板

最后,您需要检索要传递到模板的分面数组,以便按您希望的任何方式显示它们。

array:2 [▼
  "Facet Name" => array [▼
    0 => array [▼
      "name" => "Facet Value Name"
      "key" => "facet_generate_key"
      "count" => count 
      "querystring" => "querystring" /* query string to add to the request */
      "selected" => true|false 
    ]
    .../...
  ]
]