我正在研究如何对结果进行加权以选择完全匹配。例如,如果我有monkey
和monkey business
并且我搜索monkey
,则应该在猴子业务之前使用 monkey 返回记录。然而,由于我不知道的原因,它首先返回猴子业务并获得更多分数。
我尝试了几次迭代,包括match_phrase,match,term(都在bool中)。
我的最新查询是(我已经整理了它,因为有很多注释代码,请原谅我,如果语法被破坏):
"query": {
"bool": {
"must" : [ // All of these clauses must match. The equivalent of AND
{
"match": {
"supplier": {
"query": search ? search : "",
"minimum_should_match": "30%"
}
}
}
],
"should": [ // At least one of these clauses must match. The equivalent of OR
{
"match_phrase": {
"supplier": {
"query": search ? search : "",
"slop": 50
}
}
},
],
'filter' : [ // Clauses that must match, but are run in non-scoring, filtering mode
{ "match": { "signup": 100 }},
{ "match": { "isApproved": true }}
]
}
}
答案 0 :(得分:0)
您希望检索所有匹配的文档,并为完全匹配的文档获得高分。因此,bool
部分must
- minimum_should_match
部分中的“简单”匹配与should
中的100%{
"query": {
"bool":{
"must": [
{
"match":{
"supplier": "monkey business"
}
}
],
"should": [
{
"match":{
"supplier": {
"query": "monkey business",
"minimum_should_match": "100%"
}
}
}
]
}
}
}
匹配 - 部分:
f a b