我有类似以下结构的弹性搜索文档:
{
"name": "item1",
"storages": [
{"items": ["a", "b", "c", "d", "e", "f"]},
{"items": ["a 1", "b 2", "c 3", "d 4", "e 5", "f 6"]}]
}
{
"name": "item2",
"storages": [
{"items": ["d", "e", "f", "g", "h", "i", "j"]},
{"items": ["d 4", "e 5", "f 6", "g 7", "h 8", "i 9", "j 10"]}
]
}
我想要搜索字符串序列,例如 ["d 4","e 5"]。为此,我使用MoreLikeThis查询:
{
"query": {
"more_like_this" : {
"fields" : ["storages.items"],
"like" : ["d 4","e 5"],
"min_term_freq": 1,
"min_doc_freq": 1
}
}
}
它几乎可以正常工作,但是对于第一个文档返回"_score": 0.1620518,对于第二个文档返回"_score": 0.13890153。
我想要提高数组('items')开头的词项得分,因此因为"d 4"、"e 5"在数组开头出现,所以应该排名更高。
有没有办法在elasticsearch中创建这样的查询?也许它不应该像这个查询那样?
棘手的部分是查询可能类似于["d 4","e 5","xxx"](xxx不在文档中出现,但没关系)