【发布时间】:2017-04-11 10:18:39
【问题描述】:
我的索引中有一个“文本”类型的简单字段。
"keywordName": {
"type": "text"
}
我已经插入了这些文件:“三星”、“三星银河”、“三星封面”、“三星充电器”。
如果我进行简单的“匹配”查询,结果令人不安:
查询:
GET keywords/_search
{
"query": {
"match": {
"keywordName": "samsung"
}
}
}
结果:
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 1.113083,
"hits": [
{
"_index": "keywords",
"_type": "keyword",
"_id": "samsung galaxy",
"_score": 1.113083,
"_source": {
"keywordName": "samsung galaxy"
}
},
{
"_index": "keywords",
"_type": "keyword",
"_id": "samsung charger",
"_score": 0.9433406,
"_source": {
"keywordName": "samsung charger"
}
},
{
"_index": "keywords",
"_type": "keyword",
"_id": "samsung",
"_score": 0.8405092,
"_source": {
"keywordName": "samsung"
}
},
{
"_index": "keywords",
"_type": "keyword",
"_id": "samsung cover",
"_score": 0.58279467,
"_source": {
"keywordName": "samsung cover"
}
}
]
}
}
第一个问题:为什么“三星”没有最高分?
第二个问题:如何进行查询或分析,让我获得“三星”作为最高分?
【问题讨论】:
-
你问的问题基本上和stackoverflow.com/questions/43257656/…一样。第一个问题的答案是elastic.co/guide/en/elasticsearch/guide/current/…。你的第二个问题的答案是我已经回复过的另一个帖子。
-
问题完全一样,但是如果我使用与其他索引相同的索引和分析器,并且搜索“samsungs”,则标记为“samsung”,因此术语查询不起作用&匹配查询返回“三星银河”...
-
这就是为什么在开始为您的索引和针对这些要求的查询列表进行映射之前,先列出所有要求很重要的原因。
标签: elasticsearch match token keyword