我正在将ngram-filter应用于我的字符串字段:
"custom_ngram": {
"type": "ngram",
"min_gram": 3,
"max_gram": 10
}
但是结果是我丢失了比ngram范围短或长的 token 。
找不到原始 token ,例如“iq”或“a4”。
我已经在ngram之前进行了一些特定于语言的分析,所以我想避免复制整个字段。我想用ngrams扩展 token 。
有什么想法或建议吗?
这是我的一个使用custom_ngram过滤器的分析器的示例:
"french": {
"type":"custom",
"tokenizer": "standard",
"filter": [
"french_elision",
"lowercase",
"french_stop",
"custom_ascii_folding",
"french_stemmer",
"custom_ngram"
]
}
最佳答案
您别无选择,只能使用多个字段,并使用另一个能够保留较短术语的分析器来对该字段进行索引。像这样:
"text": {
"type": "string",
"analyzer": "french",
"fields": {
"standard_version": {
"type": "string",
"analyzer": "standard"
}
}
}
并调整查询以同时也触摸
text.standard_version
字段。
关于elasticsearch - Elasticsearch-nGram过滤器保留/保留原始 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38329844/