让我们说我想使用edge-ngram技术进行自动完成(完成建议器对我来说不是一个好选择)。我想索引"我们的军队"通过[" u","我们","我们","我们a","我们ar", "我们的手臂","我们的军队"]。
问题是 - 我还有一个同义词列表。例如," us"是" usa"的同义词。我怎么能分裂我们的军队"进入"我们"和"军队",找到他们的同义词并将它们重新组合在一起?
我尝试过这样的事情:
{
"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": [],
}
}
}
}
没有运气。
有没有办法连接令牌?这样我就可以将一个条目分成标记,找到同义词并将标记连接在一起?
也许是一种方法来匹配_phrase并确保第一个标记是位置0?
答案 0 :(得分:0)
你不能仅仅因为你有一个keyword
标记器而这样做。这个不会拆分文本,以便在每个术语的基础上识别同义词。由于keyword
您的term
是全文。因此,除非您定义类似"us army,usa army,u s a army,united states of america army"
的同义词,否则我不会看到其他方式:
"my_synonym_filter": {
"tokenizer": "keyword",
"type": "synonym",
"synonyms": [
"us army,usa army,u s a army,united states of america army"
]
}
}