根据字段内容排除弹性搜索的结果

时间:2013-10-09 14:33:31

标签: symfony elasticsearch

我使用FOQElasticaBundle将Elastic Search集成到我的Symfony2项目中。我有一个名为Recipe的实体,该实体具有属性$draft,表示配方尚未完成。我想从Elastic Search结果中排除具有属性$draft = 1的食谱。

这是我的foq_elastica配置的一部分:

...
types:
    chef:
        mappings:
            surname: {boost: 5}
            name: {boost: 4}
            nbLikes: { index: not_analyzed }
            nbFollowers: { index: not_analyzed }
            persistence:
            driver: orm
            model: Interacso\ApiBundle\Entity\Chef
            identifier: id
            provider: ~
            finder: ~
            listener: ~
    recipe:
        mappings:
            name: {boost: 100}
            chefName: {boost: 10}
            chefSurname: {boost: 10}
            bookNames: {boost: 5}
            ingredientNames: {boost: 2}
            tagNames: {boost: 2}
        persistence:
            driver: orm
            model: Interacso\ApiBundle\Entity\Recipe
            identifier: id
            provider: ~
            finder: ~
            listener: ~
....

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了答案,如果有人遇到同样的问题,那么响应就是在配置文件中指定一个查询构建器:

recipe:
    mappings:
        name: {boost: 100}
        chefName: {boost: 10}
        chefSurname: {boost: 10}
        bookNames: {boost: 5}
        ingredientNames: {boost: 2}
        tagNames: {boost: 2}
    persistence:
        driver: orm
        model: Interacso\ApiBundle\Entity\Recipe
        identifier: id
        provider:
                query_builder_method: buildIfIsNotDraft
        finder: ~
        listener: ~

在存储库中实现指定的方法,返回Doctrine Query Builder。捆绑包的官方文档中的更多信息:https://github.com/Exercise/FOQElasticaBundle