2016-10-18 2 views
0

에서 같은 분야에 동의어 나는 필드 제목설명에 독일 분석기를 (그리고 그것은 나를 위해 잘 작동)언어 분석기 및 elasticsearch

"mappings": { 
    "item" : { 
     "properties" : { 
     "title" : { 
      "type" : "string", 
      "analyzer": "german" 
     }, 
     "description" : { 
      "type" : "string", 
      "analyzer": "german" 
     } 
     } 
    } 
    } 

을하지만 지금은 synonyms을 추가했습니다. 같은 분야에 두 개의 분석기를 추가하는 방법은 무엇입니까?

답변

1

1 필드에 2 개의 분석기를 추가 할 수 없습니다. 당신이 할 수있는 것은 사용자 정의 분석기를 설명하는 것입니다.이 분석기는 내부에 동의어 필터를 사용하고 독일어 구체 필터를 필요한 토크 나이저와 결합하여 기본적으로 필요한 모든 것을 사용자 정의 방식으로 혼합해야합니다. ,, 등을 소문자, 형태소 분석기, 동의어 단어를 중지 - 당신은 당신이 포함 할 모든 필터를 지정해야, 필터 체인에서

PUT /my_index 
    { 
     "settings": { 
     "analysis": { 
      "filter": { 
      "german_stop": { 
       "type":  "stop", 
       "stopwords": "_german_" 
      }, 
      "german_stemmer": { 
       "type":  "stemmer", 
       "language": "light_german" 
      }, 
      "my_synonyms": { 
       "type": "synonym", 
       "synonyms": [ 
       "british,english", 
       "queen,monarch" 
       ] 
      } 
      }, 
      "analyzer": { 
      "german": { 
       "tokenizer": "standard", 
       "filter": [ 
       "lowercase", 
       "german_stop", 
       "my_synonyms", 
       "german_normalization", 
       "german_stemmer" 
       ] 
      } 
      } 
     } 
     } 
    } 

:

하나는이 같은 (매우 거친 예)를 상상할 수 , 등 (또한 염두에 두십시오, 그 순서는 중요합니다), 그리고 귀하의 질문에 설명했듯이 그것을 내부 매핑을 사용합니다.

나중에는

GET /_analyze 
{ 
    "analyzer": "german", 
    "text": "Darf ich mit Bargeld bezahlen?" 
} 
를 실행하여 분석기를 테스트 할 수
관련 문제