gpt4 book ai didi

php - Symfony2 Elastica bundle (elasticsearch)-可能仅限制 'active'项目?

转载 作者:行者123 更新时间:2023-12-02 23:06:08 24 4
gpt4 key购买 nike

我目前正在使用FOQElasticaBundle与我的Elasticsearch服务器进行交互,但是我似乎找不到一种基于每个实体上的“ Activity ”标志来限制搜索结果的方法。是否可以通过某种方式在配置中进行设置?这是我当前的配置:

foq_elastica:
clients:
default: { host: localhost, port: 9200 }

indexes:
website:
client: default
types:
story:
mappings:
title: { boost: 8 }
summary: { boost: 5 }
text: { boost: 3 }
author:
persistence:
driver: orm # orm, mongodb, propel are available
model: Joe\Bundle\StoryBundle\Entity\Story
provider:
listener:
finder:

我不能仅在 Controller / View 级别排除不活跃的故事,因为这会使分页变得混乱-我需要每页具有一致数量的项目,因此搜索将需要过滤掉 active为false的所有故事(或0)。我敢肯定这是有可能的,但是没有人知道如何做。

谢谢。

编辑

在没有为提供者指定自定义 query_builder_method的情况下,我尝试指定自定义存储库并构建查询。但是我也无法使它正常工作。这是我的搜索方法:
public function findByQueryString($queryString)
{

$builder = new \Elastica_Query_Builder();
$builder
->queryString()
->field('query', $queryString)
->queryStringClose()
->filter()
->term()
->field('active', 1)
->termClose()
->filterClose()
;
// TODO check published date...

return $this->findPaginated($builder);
}

产生以下JSON:
{
"query": {
"query_string": {
"query": "story"
},
"filter": {
"term": {
"active": "1"
}
}
},
"from": 0,
"size": 10
}

但是由于某种原因,它似乎并不喜欢过滤器的“术语”部分。我只是试图模仿 elasticsearch documentation中的内容,但我承认我真的不知道该怎么做!

最佳答案

是的,可以使用Doctrine query builderRead here

    persistence:
driver: orm
model: Application\UserBundle\Entity\User
provider:
query_builder_method: createIsActiveQueryBuilder

关于php - Symfony2 Elastica bundle (elasticsearch)-可能仅限制 'active'项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com