2013-06-24 4 views
0

나는 타이어를 사용하고 있으며 검색 결과에 문제가 있습니다. 우리는 '연필'을 찾고 있습니다.고객이 '연필'을 검색 한 경우 '연필 깎이'를 제외하십시오.

  • 은 '빨간색 연필'OK
  • 은 '전자 연필 깎이은'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로 변환됩니다 쿼리. electronic OR pencil NOT sharpener 또는 +electronic +pencil -sharpener :

당신이 sharpener을 포함하는 문서를 제외 할 경우

,이 같은 쿼리를 사용합니다.

쿼리 DSL에서 이와 같은 조건을 표현하기 위해 boolmatch 쿼리를 살펴보십시오. https://github.com/karmi/tire/tree/master/test/integration

+0

사용자가 '연필 깎이'또는 '빨간색 연필'을 입력했는지 알 수 없으므로 제외 할 단어를 알 수 없습니다. – Boti

관련 문제