如何提高elasticsearch中的搜索相关性顺序?
我有一个名为title的字段,其值如下如何提高elasticsearch中的搜索相关性顺序?,search,elasticsearch,lucene,match,Search,elasticsearch,Lucene,Match,我有一个名为title的字段,其值如下 苹果iphone6s 苹果iphone6 苹果iphone 6s plus 苹果iphone 苹果iphone5s 所以如果用户搜索 苹果iphone6 那么它应该按照如下顺序出现 2>1>3>4>5 。 如果用户搜索 苹果iphone6s 它应该是按顺序来的 1>3>2>4>5 如何使用elasticsearch实现这一点 我使用了多搜索和all。但是没有帮助 顺序应首先完全匹配,然后是前缀。然后是短语,然后是包含所有3个术语的字段,然后是包含2个术语的
{
"query": {
"bool":{
"should":[
{"match_phrase":{"title":"apple iphone 6s"}},
{"match_phrase_prefix":{"title":"apple iphone 6s"}}
]
}
}
}
如果您想要所有包含“iphone”和“apple”的数据,您应该为搜索中的每个单词添加一个匹配短语前缀。您可以尝试:
{
"query": {
"bool":{
"should":[
{"match_phrase":{"title":"apple iphone 6s"}},
{"match_phrase_prefix":{"title":"apple iphone 6s"}}
]
}
}
}
如果您想要所有包含“iphone”和“apple”的数据,您应该为搜索中的每个单词添加一个匹配短语前缀。如果您想要按照指定的顺序获得结果,您需要进行此类查询:
POST /phone/phone/_search
{
"query": {
"bool": {
"should": [
{
"match_phrase_prefix": {
"text": "apple iphone 6"
}
},
{
"match": {
"text": "apple iphone 6"
}
}
]
}
}
}
搜索查询字符串“apple iphone 6”和结果顺序:
苹果iphone6
苹果iphone6s
苹果iphone 6s plus
苹果iphone
苹果iphone5s
如果要按指定的顺序获取结果,则需要进行以下查询:
POST /phone/phone/_search
{
"query": {
"bool": {
"should": [
{
"match_phrase_prefix": {
"text": "apple iphone 6"
}
},
{
"match": {
"text": "apple iphone 6"
}
}
]
}
}
}
搜索查询字符串“apple iphone 6”和结果顺序:
苹果iphone6
苹果iphone6s
苹果iphone 6s plus
苹果iphone
苹果iphone5s
我在下面这样做。它以我想要的方式给了我预期的结果
{
"query": {
"filtered": {
"query": {
"bool": {
"should": [{
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"operator": "and",
"boost": 1
}
}, {
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"type": "phrase_prefix",
"boost": 2
}
}, {
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"type": "phrase",
"boost": 3
}
}]
}
}
}
}
}
我在下面这样做。它以我想要的方式给了我预期的结果
{
"query": {
"filtered": {
"query": {
"bool": {
"should": [{
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"operator": "and",
"boost": 1
}
}, {
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"type": "phrase_prefix",
"boost": 2
}
}, {
"multi_match": {
"query": "apple iphone 6",
"fields": ["title"],
"type": "phrase",
"boost": 3
}
}]
}
}
}
}
}
在这种情况下,你认为完全匹配和短语之间有什么区别?如果用户搜索iphone 6,那么顺序也应该是2>1>3>4>5在这种情况下,完全匹配和短语之间的区别是什么?如果用户搜索iphone 6,那么顺序也应该是2>1>3>4>5标题是否正确字段是否被分析?映射将是什么?是否分析标题字段?映射将是什么?