2014-02-10 4 views
1

ES에서 색인 된 언어에 대해 동의어 검색을 만들려고합니다. 예를 들어 elasticsearch에서 동의어 검색

,

인덱스 문서 -> 이름 : 독일어

동의어 : 독일어, 독일어, XYZ

은 내가 만들고 싶어하는 것은, 내가 입력 할 때 중 독일어 또는 독일어 또는 XYZ, ES가 저에게 독일어를 돌려줍니다 ...

그럴 수 있습니까?

+0

예, 물론 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html – phoet

답변

0

예 매우 그렇습니다. ElasticSearch는 동의어를 매우 잘 처리합니다. 여기에 내가 내 클러스터에서 동의어를 구성하는 방법의 예입니다 -

curl -XPOST localhost:9200/**new-index** -d '{ 
"settings": { 
"number_of_shards": 2, 
"number_of_replicas": 0, 
"analysis": { 
    "filter": { 
    "synonym": { 
     "type": "synonym", 
     "synonyms_path": "synonyms/synonyms.txt" 
    } 
    }, 
    "analyzer": { 
    "synonym": { 
     "tokenizer": "lowercase", 
     "filter": [ 
     "synonym" 
     ] 
    } 
    } 
} 
}, 
"mappings": { 
"**new-type**": { 
    "_all": { 
    "enabled": false 
    }, 
    "properties": { 
    "Title": { 
     "type": "multi_field", 
     "store": "yes", 
     "fields": { 
     "Title": { 
      "type": "string", 
      "analyzer": "synonym" 
     } 
     } 
     } 
    } 
    } 
} 
}' 

동의어 파일의 경로는 동의어 폴더에 대한 설정 폴더 안에 보이는 텍스트 파일을 찾습니다. 귀하의 요구 사항에 대한 synonyms.txt의 내용의 예는 것 -

독일어

, 독일어, XYZ

기억을 - 당신이 인덱스 시간에 소문자 필터가있는 경우, 동의어가 될 필요가 소문자. 작동하지 않는 경우 노드를 다시 시작하십시오.

관련 문제