假设我想使用edge-ngram技术进行自动完成(完成建议器对我来说不是一个好选择) . 我想用[“你”,“我们”,“我们”,“我们一个”,“我们的”,“我们的手臂”,“我们的军队”]来索引“我们的军队” .
问题是 - 我也有一个同义词列表 . 例如,“我们”是“美国”的同义词 . 我怎样才能将“我们的军队”分成“我们”和“军队”,找到他们的同义词并将它们重新组合在一起?
我尝试过这样的事情:
{
"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?
1 回答
你不能仅仅因为你有一个
keyword
tokenizer而这样做 . 这个不会拆分文本,以便在每个术语的基础上识别同义词 . 由于keyword
,term
是全文 . 所以,除非你定义你的同义词,如"us army,usa army,u s a army,united states of america army"
,我没有看到其他方式: