考虑一下,我有一个文档,其中有一个包含以下内容的字段:5W30 QUARTZ INEO MC 3 5L
用户希望能够搜索MC3
(没有空格)并获得文档;但是,搜索MC 3
(有空格)也应该有效。此外,有些文档的内容没有空格,在使用空格查询时应该找到这些内容。
我尝试了没有空格的索引(例如5W30QUARTZINEOMC35L
),但这并不能真正地使用通配符搜索,我会匹配太多,例如,MC35也会匹配,我只想匹配连接在一起的两个确切的单词(以及确切的单个单词)。
到目前为止,我正在考虑对所有两个单词的组合进行索引,例如5W30QUARTZ
、QUARTZINEO
、INEOMC
、MC3
、35L
。但是,Elasticsearch是否有一个本机解决方案?
发布于 2020-03-02 10:42:23
我很确定你想用瓦形令牌滤波器做什么。根据您的映射,我可以想象您需要在内容字段中添加一个类似这样的过滤器,以便将令牌成对索引:
"filter_shingle":{
"type":"shingle",
"max_shingle_size":2,
"min_shingle_size":2,
"output_unigrams":"true"
}
注意,这也是默认配置,我只是为了清楚地添加了它。
https://stackoverflow.com/questions/60486596
复制相似问题