把两个单词加工成一个单词



考虑我有一个文档,它有一个包含以下内容的字段:5W30 QUARTZ INEO MC 3 5L

用户希望能够搜索MC3(没有空间(并获得文档;然而,搜索MC 3(带空格(也应该有效。此外,有些文档的内容没有空格,并且在使用空格进行查询时应该找到这些文档。

我尝试了不带空格的索引(例如5W30QUARTZINEOMC35L(,但这并不能真正起作用,因为使用通配符搜索我会匹配太多,例如MC35也会匹配,我只想匹配两个连接在一起的确切单词(以及确切的单个单词(。

到目前为止,我正在考虑为两个单词的所有组合添加索引,例如5W30QUARTZQUARTZINEOINEOMCMC335L。然而,Elasticsearch有本地解决方案吗?

我很确定您想要的东西可以用带状标记过滤器来完成。根据你的映射,我想你需要在你的内容字段中添加一个类似这样的过滤器,以使你的代币成对索引:

"filter_shingle":{
"type":"shingle",
"max_shingle_size":2,
"min_shingle_size":2,
"output_unigrams":"true"
}

请注意,这也是默认配置,我只是为了清楚起见添加了它。

最新更新