【发布时间】:2016-04-21 13:30:49
【问题描述】:
我有一个 Elasticsearch 索引,其中有一些数据。我实现了 did-you-mean 功能,因此当用户写错拼写的内容时,它可以收到带有正确单词的建议。
我使用短语建议器是因为我需要对短语的建议,例如名称,问题是索引中不存在某些建议。
例子:
document in the index: coding like a master
search: Codning like a boss
suggestion: <em>coding</em> like a boss
search result: not found
我的问题是,我的索引中没有与指定建议匹配的短语,因此它向我推荐了不存在的短语,因此会给我一个未找到的搜索。
我能用这个做什么?短语建议器不应该为索引中实际存在的短语提供建议吗?
这里我会留下相应的查询、映射和设置,以备不时之需。
设置和映射
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1,
"search.slowlog.threshold.fetch.warn": "2s",
"index.analysis.analyzer.default.filter.0": "standard",
"index.analysis.analyzer.default.tokenizer": "standard",
"index.analysis.analyzer.default.filter.1": "lowercase",
"index.analysis.analyzer.default.filter.2": "asciifolding",
"index.priority": 3,
"analysis": {
"analyzer": {
"suggests_analyzer": {
"tokenizer": "lowercase",
"filter": [
"lowercase",
"asciifolding",
"shingle_filter"
],
"type": "custom"
}
},
"filter": {
"shingle_filter": {
"min_shingle_size": 2,
"max_shingle_size": 3,
"type": "shingle"
}
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"suggest_field": {
"analyzer": "suggests_analyzer",
"type": "string"
}
}
}
}
}
查询
{
"DidYouMean": {
"text": "Codning like a boss",
"phrase": {
"field": "suggest_field",
"size": 1,
"gram_size": 1,
"confidence": 2.0
}
}
}
感谢您的帮助。
【问题讨论】:
标签: elasticsearch