ElasticSearch查询Ngramm

时间:2018-03-16 18:12:56

标签: elasticsearch

我正在尝试搜索此类案例 例如我有文件

1)"There are a lot of diesel cars in the city"
2)"Cars have diesel engines"
3)"Bob sold diesel car"

我想找到doc 1和doc 3 如果我写了这样的查询

"query":
  { 
   "function_score": 
       { "query":
            {"bool":
               {"should":[
                  {"query_string": 
                     { "fields" : ["text"],
                      "query" : "\"diesel car\"~1^5"
       }}]}}}}

我会找到doc1而不是doc3 如果我使用Ngramm分析仪,这个查询是否也适用于doc3?

或许还有其他解决方案?

邻近搜索仅适用于完全精确的短语,如果单词中只有一个字符发生变化则不起作用。也许ES还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

试试这个

someString.each_char { |c| bytes += c + "\x00" }

答案 1 :(得分:0)

我找到了解决方案

1)使用英语词干分析器设置和映射

2)使用简单的查询,如

(diesel AND car)^5