我正在Laravel中使用Elastic Search,我的索引有3个字段text,mood,haloha_id
。首先,如果要匹配,我想匹配"haloha_id"
(将haloha_id视为帖子,将文本视为该帖子的注释),然后进行进一步匹配。假设现在已匹配"haloha_id"
,我想匹配“文本”字段中的子字符串,然后匹配“心情”(0、1,2等整数,则为整数)“仅当匹配某些“文本”时才应匹配心情我正在执行“像我的”查询,这意味着仅显示与特定帖子的用户评论匹配的评论。我的查询中的问题是
我自己的评论未显示在顶部,因此匹配率100%
如果某人的“心情”和“评论”匹配了我的100%,那么它就不会出现在顶部。
我删除了与“情绪”相关的查询,但分数没有影响,这意味着分数不包括情绪匹配分数。
这是我的查询。
"query"=>[
"bool"=>[
"should"=>[
"match"=>[
"text"=>[
"query"=>$userHaloha->filtered_text,
"fuzziness"=>"AUTO",
]
]
],
"minimum_should_match"=>1,
"must"=>[
"match"=>[
"mood"=>$userHaloha->mood,
],
"match"=>[
"haloha_id"=>$userHaloha->haloha_id
]
]
查询不言自明。我已将haloha_id添加到必须阻止文件必须匹配“ haloha_id”,应阻止包含“文本”和心情。
{
"query": {
"bool": {
"must": [
{
"match": {
"haloha_id": $userHaloha->haloha_id
}
}
],
"should": [
{
"match": {
"text": {
"query": $userHaloha->filtered_text,
"fuzziness": "auto"
}
}
},
{
"bool": {
"must": [
{
"match": {
"text": $userHaloha->filtered_text
}
},
{
"term": {
"mood": {
"value": $userHaloha->mood
}
}
}
]
}
}
]
}
}
}