搜索不返回我想要的ngram过滤器匹配

时间:2012-11-29 23:03:57

标签: elasticsearch tire

我的弹性搜索设置是这样的

         :analyzer => {
            :default => {
              :type => "custom",
              :tokenizer => "whitespace",
              :filter => ["lowercase", "standard", "my_ngram"]
            }
          }

其中my_gram的指定方式如下

            :my_ngram => {
              :type => "nGram",
              :min_gram => 1,
              :max_gram => 20
            }

问题在于,当我搜索像“cre”这样的东西时,我会得到“婴儿床”,以及“船员”和“记住”...这似乎与“重新”和“cr”相匹配...如果匹配,我希望它与单词中的'cre'完全匹配。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

找到答案...只需在:default_operator => AND选项中指定query_string即可。所以这样的事情(使用Tire gem,因为我很懒)

    Post.search do
      query { string your_query_string_here, :default_operator => "AND" }
    end