我有一个使用FOSElasticaBundle的 Symfony 2.7.6 应用程序。
我有两种类型的搜索:
一个没有关键字,在这种情况下只应用过滤器,所有文档的分数都是 1(有时是随机顺序),在这种情况下,主要查询是:
$query = new Elastica\Query\MatchAll();
一个带有关键字,应用相同的过滤器,并且匹配再次运行一个字段列表(一个具有不同的提升)。结果按分数存储。现在的主要查询是:
$match = new Elastica\Query\MultiMatch(); $match->setQuery($keyword); $match->setOperator('AND'); $match->setFields([ 'field1^30', 'field2', 'field3', 'field4', '_all' ]);
这两个搜索运行良好。
现在对于这两种搜索,我希望对给定的字段值应用动态提升。比方说:if field5 == 'value' then add boost 15
,(15只是一个例子,我们将做测试,看看必须选择什么额外的提升值)这里使用的值不是关键字,它是另一个参数。
我尝试使用FunctionScore
和Boosting
查询但没有成功。任何带有非常简单的弹性搜索查询的提示将不胜感激。