2017-04-08 1 views
1

스칸디나비아 문자가 많은 이름이있는 Elasticsearch으로 웹 사이트의 색인을 생성하고 있습니다. 문제는 사용자가 일반적으로 미국식 영어 키보드를 사용하여 가장 가까운 영어 문자로 바꾸는 것입니다. 예를 들어, 인덱싱 된 내용은 Tromsø이지만 검색 대상은 Tromso입니다.영어가 아닌 키보드의 탄성 검색 기호 동의어

Elasticsearch에서 검색 할 때 원본 문자와 영문 문자가 같아 지도록 문자 동의어를 추가하려면 어떻게해야합니까?

답변

0

당신은 사용자 정의 분석기를 만들고 동일한 출력 기간을 줄 것이다이 경우 모두 TromsøTromso

PUT my_index 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "my_analyzer": { 
        "tokenizer": "standard", 
        "char_filter": [ 
         "my_char_filter" 
        ] 
       } 
      }, 
      "char_filter": { 
       "my_char_filter": { 
        "type": "mapping", 
        "mappings": [ 
         "ø => o", 
         "á => a" 
        ] 
       } 
      }, 
      "filter": [ 
       "lowercase" 
      ] 
     } 
    } 
} 

처럼에 대한 char filter을 설정할 수 있습니다. 사용자 지정 분석기를 만드는 방법에 대한이 항목을 살펴보십시오. https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html

+0

이 방법이 효과가 있지만 대/소문자를 구분합니다. Tromsø/Tromso를 검색 할 때 tromsø/tromso를 모두 검색하면 검색 결과가 0이됩니다. 어떻게 여전히 문자를 매핑하는 동안 대소 문자를 구분하지 않고 유지할 수 있습니까? – shiznatix

+0

이 경우 분석기에'lowercase' 토큰 필터를 추가해야합니다. 업데이트 된 답변보기 – Random

관련 문제