elasticsearch - 将两个单词作为一个单词进行加工

标签 elasticsearch elasticsearch-query elasticsearch-analyzers

假设我有一个包含以下内容的字段的文档:5W30 QUARTZ INEO MC 3 5L
用户希望能够搜索 MC3 (没有空格)并获取文件;但是,请搜索 MC 3 (带空格)也应该工作。此外,可能存在内容不包含空格的文档,并且在使用空格进行查询时应该找到这些文档。

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

到目前为止,我正在考虑另外索引两个单词的所有组合,例如5W30QUARTZ , QUARTZINEO , INEOMC , MC3 , 35L .但是,Elasticsearch 是否有针对此的原生解决方案?

最佳答案

我很确定你想要的可以用 shingle token filter 来完成。 .根据您的映射,我想您需要在内容字段中添加一个看起来像这样的过滤器,以使您的 token 成对索引:

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

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

关于elasticsearch - 将两个单词作为一个单词进行加工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486596/

相关文章:

elasticsearch - 建议词拼写错误(“did you mean”)与短语建议和Elasticsearch空格纠正

elasticsearch - 通过关键字类型的规范化器实现像雪球分析器这样的功能-ELASTICSEARCH 5.6

elasticsearch - 在 ElasticSearch 中启用搜索慢日志

docker - 在Docker堆栈上部署具有JDBC管道的Logstash反复创建新容器

performance - 使用过滤器,查询或两者结合来优化Elasticsearch查询

python - Elasticsearch子字符串查询的一种特殊情况

elasticsearch - 文本字段上的ElasticSearch Analyzer

sql - 如何将 ElasticSearch 查询传递给 hadoop

java - 使用java highlevelrestclient从elasticsearch查询数据

elasticsearch - 折叠字段 `xxx` 的未知类型,仅接受关键字和数字错误