gpt4 book ai didi

php - 在一个查询中组合两个不同的过滤器 - Elastica

转载 作者:可可西里 更新时间:2023-10-31 23:06:18 24 4
gpt4 key购买 nike

我的问题很简单。我想在 Elastica 的一个查询中组合两个过滤器,一个 filter_bool 和一个 filter_range。代码是

public function getAdvancedTweetsEs($keyword, $location, $datepicker, $datepicker1, $offset)
{
$elasticaClient = new Elastica_Client();

// Load index
$elasticaIndex = $elasticaClient->getIndex('mongoindex3');

// Define a Query. We want a string query.
$elasticaQueryString = new Elastica_Query_QueryString();
//$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery($keyword);

// Create the actual search object with some data.
$elasticaQuery = new Elastica_Query();
$elasticaQuery->setQuery($elasticaQueryString);
$elasticaQuery->setFrom(0);
$elasticaQuery->setLimit($offset);

//Set a filter in text
$elasticaFilterBool = new Elastica_Filter_Bool();
$filter1 = new Elastica_Filter_Term();
$filter2 = new Elastica_Filter_Term();
$filter1->setTerm('text', array(strtolower($keyword)));
$filter2->setTerm('location', array(strtolower($location)));
$elasticaFilterBool->addMust($filter1);
$elasticaFilterBool->addMust($filter2);
$elasticaQuery->setFilter($elasticaFilterBool);

$range = new Elastica_Query_Range();
$range->addField('date',
array( 'from' => $datepicker,
'to' => $datepicker1
)
);

//Search on the index.
$elasticaResultSet = $elasticaIndex->search($elasticaQuery);

$elasticaResults = $elasticaResultSet->getResults();

$results = array();

foreach ($elasticaResults as $elasticaResult)
{
$results[] = $elasticaResult->getData();
}

return $results;
}

我无法在 $elasticaQuery 中将两个过滤器放在一起。如果有任何帮助,我将不胜感激!

谢谢!

最佳答案

为什么不将范围过滤器添加为 bool 过滤器中的另一个 must 项:

$rangeFilter = new Elastica_Filter_Range();
$rangeFilter->addField('date',
array( 'from' => $datepicker,
'to' => $datepicker1
)
);
$elasticaFilterBool->addMust($rangeFilter);
$elasticaQuery->setFilter($elasticaFilterBool);

您需要在 bool 过滤器中使用过滤器,而不是查询。请注意,我使用了 Elastica_Filter_Range 而不是您使用的范围查询。

此外,您知道您使用的是过时版本的 Elastica,新版本使用命名空间!

关于php - 在一个查询中组合两个不同的过滤器 - Elastica,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18671580/

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