2013-06-24 52 views
0

我正在使用轮胎,并且我们面临搜索结果问题。 我们正在寻找'铅笔'。如果客户搜索“铅笔”,则不包括“铅笔刀”

  • '红铅笔' OK
  • '电子卷笔刀' NOT OK不应该包括在结果集中。

这是模型上的轮胎设置:

settings :analysis => { 
      :analyzer => { 
       :my_analyzer => { 
       "tokenizer" => "lowercase", 
       # "filter"  => ["synonym", "porterStem", "phonetic"] 
       "filter"  => ["synonym", "porterStem"] 
       } 
      }, 
      :filter => { 
       :synonym => { 
        "type" => "synonym", 
        "synonyms_path" => "#{Synonym.path}" 
       } 
      } 
      } do 
    mapping do 
     indexes :commodity_code 
     indexes :commodity_name 
     indexes :long_description, analyzer: 'my_analyzer' 
     indexes :short_description, boost: 10, analyzer: 'my_analyzer' 

回答

0

查询electronic pencil sharpener将默认转换为electronic OR pencil OR sharpener

如果要排除包含sharpener的文档,请使用类似如下的查询:electronic OR pencil NOT sharpener+electronic +pencil -sharpener

查看boolmatch查询以在查询DSL中表达这些条件的条件; https://github.com/karmi/tire/tree/master/test/integration

+0

我们不知道用户是否输入'卷笔刀'或'红铅笔'...所以我们不知道哪个单词排除... – Boti