我使用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: ~
....
有什么建议吗?
答案 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