0

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

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

其中 my_gram 是这样指定的

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

问题是,当我搜索“cre”之类的内容时,我得到“crib”作为结果以及“crew”和“remember”......这看起来就像它在're'和'cr'上的匹配......如果有匹配项,我希望它与单词中的“cre”完全匹配。

我究竟做错了什么?

4

1 回答 1

1

找到了答案......只需:default_operator => ANDquery_string选项中指定。所以像这样(使用轮胎宝石,因为我很懒)

    Post.search do
      query { string your_query_string_here, :default_operator => "AND" }
    end
于 2012-11-29T23:27:54.593 回答