FOSElasticaBundle / 自定义过滤器

用户3703456

我有一个实体,title, url, description, text, enabled,...我只想通过enabled = true文章进行搜索我怎样才能在弹性中做到这一点?

我的配置:

fos_elastica:
    clients:
        default: { host: localhost, port: 9200 }
    indexes:
        appletrh:
            index_name: 'domain.com'
            client: default
            types:
                products:
                    properties:
                        title: { type: string, analyzer: czech }
                    persistence:
                        driver: orm
                        model: Web\MagazineBundle\Entity\Article
                        elastica_to_model_transformer:
                          **query_builder_method: search**
                        provider: ~
                        listener: ~
                        finder: ~

EntityRepository搜索功能

 public function search()
    {
        $qb = $this->createQueryBuilder('p');
        $qb->where('p.enabled = true');

        return $qb;
    }

行动:

public function searchAction(Request $request)
{
    $keyword = $request->query->get('keyword');
    $finder = $this->get('fos_elastica.finder.domain.articles');
    $paginator = $this->get('knp_paginator');
    $articles= $finder->createPaginatorAdapter($keyword);
    $pagination = $paginator->paginate($articles, $request->query->get('page', 1), 12);


    return $this->render('WebMagazineBundle:Search:search.html.twig', ['articles' => $pagination]);
}

我认为这是正确的解决方案,但它仍然从数据库返回所有数据。

斯拉夫乔

我觉得您应该为此目的在捆绑配置中使用“provider”,而不是“elastica_to_model_transformer”选项,例如:

provider:
   query_builder_method: search

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章