我在Elastic中有一个对象,它代表一个具有两个属性的产品: title 和 category 。在标题内我有一个关于 exact-word 的字段和另一个关于同义词的字段。在搜索时,我正在通过确切的单词提高文档的搜索量,但如果我有一个名为“Notebook dell”和“bag notebook”的产品,那么它首先会带来袋子笔记本。
我希望在传递自定义分析器后优先考虑搜索词的出现顺序,例如:
应该是
这可能吗?
答案 0 :(得分:0)
我认为您正在寻找Span First Query
您可以在you子句中添加此项以增加以搜索词开头的文档,如此
{
"query": {
"bool": {
"should": [
{
"match": {
"title": "notebook"
}
},
{
"span_first": {
"match": {
"span_term": {
"title": "notebook"
}
},
"end": 2,
"boost" : 5
}
}
]
}
}
}
同样span queries
不是analyzed
所以你必须要照顾它,因为 notebook 和 Notebook 会产生不同的结果。