2013-12-17 4 views
0

그래서 username, titletags 필드에서 정지 단어 필터링을 해제하고 description 필드는 필터링하지 않으려합니다.선택적으로 탄성 검색에서 단어 중지

당신은 내가 the best라는 결과를 필터링하지 않으려는 상상할 수 있지만,이 description 필드 (당신이 예를 원하는 경우 GitHub의에 the 검색)에있는 경우 내가 점수에 영향을 미치는 the을 중지 할 않기 때문에.

이제 @Javanna은 (Is there a way to "escape" ElasticSearch stop words?) 말한다 : 귀하의 경우

을 차라리 스톱 워드리스트를 수정하는 것보다 특정 필드에 대한 중지 단어를 사용하지 않도록,하지만 당신이 원하는 경우도 후자를 할 수 있습니다. 하나 나를 위해 작동하지 않았다 http://www.elasticsearch.org/blog/stop-stopping-stop-words-a-look-at-common-terms-query/ : 나는 주위를 검색하고 common 쿼리를 시도 그래서 예를 제공하기 위해 실패

.

그래서 필터링 스톱 워드를 막기 위해 검색했지만 가장 가까운 것은 인덱스 폭을 막는 것입니다 : Can I customize Elastic Search to use my own Stop Word list? 직접 분석기를 공격하거나 내 설명서 분석기를 작성하는 데 도움이되지 않습니다. :/.

특정 필드에서 정지 단어를 선택적으로 비활성화하는 가장 좋은 방법은 무엇입니까?

답변

1

나는 당신이 이미해야 할 일을 알고 있다고 생각하는데, 이는 특정 필드에 대해 분석기를 사용자 정의하는 것입니다. 내가 아는 바로는 유효한 구문 예제를 만들지 못했습니다. 이것은 우리가 프로젝트에 사용되는 것입니다,이 예제는 올바른 방향으로 포인트를 바랍니다 :

{ 
    :settings => { 
     :analysis => { 
     :analyzer => { 
      :analyzer_umlauts => { 
      :tokenizer => "standard", 
      :char_filter => ["filter_umlaut_mapping"], 
      :filter  => ["standard", "lowercase"], 
      } 
     }, 
     :char_filter => { 
      :filter_umlaut_mapping => { 
      :type => 'mapping', 
      :mappings_path => es_config_file("char_mapping") 
      } 
     } 
     } 
    }, 
    :mappings => { 
     :company => { 
     :properties => { 
      [...] 
      :postal_city => { :type => "string", :analyzer => "analyzer_umlauts", :omit_norms => true, :omit_term_freq_and_positions => true, :include_in_all => false }, 
     } 
     } 
    } 
    } 
+0

달콤한 그것은 내가 다시 생각하면 내일을 테스트하고 감사 :) – Sammaye

+0

네 마침내있어 표시됩니다 않습니다 감사합니다 :) – Sammaye

관련 문제