【发布时间】:2015-02-17 16:32:06
【问题描述】:
假设我想使用 edge-ngram 技术进行自动完成(完成建议对我来说不是一个好的选择)。我想通过 ["u"、"us"、"us"、"us a"、"us ar"、"us arm"、"us Army"] 索引“us Army”。
问题是 - 我还有一个同义词列表。例如,“我们”是“美国”的同义词。如何将“我们军队”拆分为“我们”和“军队”,找到它们的同义词并将它们重新组合在一起?
我试着做这样的事情:
{
"analysis": {
"filter": {
"ngram_prefix": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
},
"custom_synonyms": {
"type": "synonym",
"tokenizer": "standard",
"synonyms_path": "/my/synonym/path/synonyms.txt",
"ignore_case": True
}
},
"analyzer": {
"synonym_ngram": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"custom_synonyms",
"lowercase",
"ngram_prefix",
],
"char_filter": [],
}
}
}
}
没有运气。
有没有办法连接标记?这样我就可以将条目拆分为标记,找到同义词并将标记重新连接在一起?
也许是一种匹配短语并确保第一个标记位于位置 0 的方法?
【问题讨论】:
标签: elasticsearch lucene token analyzer