Dav*_*fer 6 lucene elasticsearch
我有要在ElasticSearch中编制索引的文档,其中包含一个名为的文本字段name.我目前使用snowball分析器索引名称.但是,我想匹配包含和不包含空格的名称.例如,名为"The Home Depot"的文档应与"homedepot","home"和"home depot"匹配.此外,具有单个单词名称的文档(如"ExxonMobil")应与"exxon mobil"和"exxonmobil"匹配.
我似乎无法找到正确的分析器/过滤器组合来实现这一目标.
我认为解决这个问题的最直接方法是应用一个Shingle令牌过滤器,它不会创建ngrams字符,而是创建传入令牌的组合.您可以将它添加到您的分析器,如:
filter:
........
my_shingle_filter:
type: shingle
min_shingle_size: 2
max_shingle_size: 3
output_unigrams: true
token_separator: ""
Run Code Online (Sandbox Code Playgroud)
您应该注意过滤器链中放置此过滤器的位置.在所有令牌分离/删除/替换已经发生之后(即在任何StopFilters,SynonymFilters,词干分析器等之后),它可能应该在链中迟到.
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |