2014-12-01 2 views
0

나는 탄성 검색 색인과 위치를 일치시키기 위해 탄성 검색을 사용하고 있습니다. 탄성 검색 인덱스 데이터의동의어 상태 이름 일치하는 탄성 검색

샘플

{ 
"_index": "reference_2", 
"_type": "geonames", 
"_id": "AUn2LNJlZ8pWP0iSxZYS", 
"_version": 1, 
"_score": 1, 
"_source": { 
    "geoNameId": "7509382", 
    "lat": "34.64274", 
    "longi": "64.51122", 
    "timeZoneId": "Asia/Kabul", 
    "countryCode": "AF", 
    "state": "Tamil nadu", 
    "timezone": "AFT", 
    "stateCode": "09", 
    "alterCityName": [ 
     chennai 
    ], 
    "cityName": "chennai", 
    "population": "0", 
    "countryName": "India" 
}, 
"sort": [ 
    1, 
    "geonames", 
    "reference_2" 
] 
} 

사용자가 "Tamilnadu에"또는 타밀 나두와 같은 상태를 기록 할 수 있습니다, 나는 프로그램이나 Tamilnadu에 타밀 나두와 같은 것을 이해하는 쿼리를합니다. 이 방법을 달성하는 데 도움이 될 수 있습니다.

답변

0

가장 쉬운 방법은 사용할 동의어를 모두 포함하는 동의어 파일을 정의하는 것입니다. 해당 동의어 파일을 사용하기 위해 필드에 특정 매핑을 제공하십시오.

예를 들어, 당신은

tamil nadu,tamilnadu,tn => tamilnadu 
andhra pradesh,andra,andrhrapradesh,ap => andhrapradesh 

사용자 정의 분석 동의어 파일 공용 폴더 경로를 지정하고 당신의 분야에 사용할 파일 같은 것을 포함 동의어.

"filter": { 
      "custom_state": { 
       "type" : "synonym", 
       "synonyms_path" : "<path to synonym file>" 
      }, 
    ..... 

    "analyzer": { 
      "states": { 
       "type":   "custom", 
       "filter": [ "lowercase", "custom_state"] 
      }, 
    ....... 
    "properties" : { 
     "STATE" : {"type" : "string", "analyzer": "states"}, 
    ........ 

별도의 동의어 파일을 사용하면 나중에 더 쉽게 값을 확장/포함 할 수 있다는 이점이 있습니다.