2013-09-24 34 views
0
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, boost: 1,analyzer: 'my_analyzer' 
    indexes :short_description, boost: 3, analyzer: 'my_analyzer' 
    indexes :manufacturer_name 
    indexes :manufacturer_part_number 
    indexes :increase_relevance_text 
    indexes :decrease_relevance_text  
end 

升压相关性值

配置ElasticSearch使得如果由最终用户提供的搜索项是精确匹配任何在Increase_Relevance_Text字段短语,则该特定产品相关的增加了Increase_Relevance_Points中的金额。

配置弹性搜索,使得如果最终用户提供的搜索词包含Decrease_Relevance_Text字段中包含的任何单词或短语(但不一定完全匹配),则该特定产品的相关性为减少了Decrease_Relevance_Points中的金额。

回答

0

这是我得到

解决

应该做

  custom_score :script => "_score+doc['increase_relevance_points'].value" do 
      boolean do 
      should { match :increase_relevance_text, term} 
      end 
      end 
     end