2015-02-03 4 views
1

문자열 형식으로 데이터 (지리적 이름)를 가져 오는 경우가 있습니다 (예 : 아시아, 오스트레일리아) 때때로 한 개 이상의 지역이있는 문자열도 가져옵니다 (예 : - 유럽 & 아프리카, 북미 및 독일 등). 또한이 영역의 구분자는 다르지만 영역은 동일하게 유지됩니다 (예 : - 아시아 & 아프리카, 아시아 - 아프리카, 아시아/아프리카 등). 주된 문제는이 데이터가 일치하지 않을 수 있다는 것입니다. 철자 오류도 있습니다. (예 : Pacific/Pasific 등)문자열에 맞춤법 오류가 있는지 확인하십시오.

이 모든 영역을 버킷 집합으로 매핑해야하지만 지금까지 수동으로 수행해야했습니다. 적어도 어느 정도 이러한 문자열의 매핑을 자동화 할 수있는 방법이 있습니까? 나는 soundex 기능을 사용하려했지만 미국이나 미국 또는 미국이 다르게 표시되고 오스트리아와 호주가 동일하게 표시 될 때 반대 의견을 제시했습니다.

도움을 주셔서 감사합니다.

+0

이 이름들은 어떻게 구합니까? 이것은 사용자 입력의 문제입니까, 아니면 제어 할 수없는 소스에서 이러한 문자열을 받고 있습니까? – Steve

+0

잘못 입력 된 데이터를 수정하는 것은 개발자의 책임이 아니지만 Stack Overflow에 관한 질문을하기 전에 * 자신의 요구 사항 *을 시도한 개발자의 책임입니다. 지금까지 시도한 것을 보여주십시오. – Sheridan

+0

@ 스티브 블룸버그 데이터를 사용합니다. 그래서 우리는 그것을 통제 할 수 없습니다. 블룸버그에게 블룸버그에게 그들이 제공 한 방식대로 데이터를 제공 할 수있는 방법이 있는지 물어 봤다. –

답변

0

(퍼지) 검색 엔진 사용에 대해 생각해 보셨습니까? (예 : Lucene).

이, 나는 다음을 수행합니다 :

  1. 말했다 지역에 유효한 모든 동의어를 포함, 지역 당 1 문서를 만듭니다. 당신은 여러 지역 문자열이 규칙의 집합을 기준으로 동의어 토큰 화
  2. (각 동의어가 전체 지수의 고유 있는지 확인) (구두점에 분할 뭔가해야 될 좋은 시작)
  3. 각 입력 검색 동일한 토큰 화 규칙을 사용하여 인덱스에 대해

결국 최고 점수를 얻습니다.

FuzzyQuery로 철자 오류를 처리 할 수 ​​있습니다 (예 : 오류가 입력에 허용 된 경우). 매개 변수로 편집 거리를 지정합니다.

입력 내용의 품질을 제어 할 수 없다면 어떤 일을 하든지 (읽음 : 많을 수 있음) 가양 성을 얻게됩니다.

+0

고맙습니다. 또한 나는 100 % 매핑이 가능하지 않다는 것을 알고 있지만 50 %까지도 수동 작업을 줄일 수 있다면 그 큰 .. 환호. : D –

+0

당신은 동의어로 당신이 의미하는 것을 빨리 생각할 수 있습니까 ?? –

+0

예를 들면 "USA", "United States of America"는 동의어로 간주 될 수 있으므로 동일한 문서/물리적 영역으로 간주됩니다. –

0

내가 거기에서 가장 일반적인 대한 동의어로 맞춤법이 틀린 단어
시작 카운트 동의어
을 만들
spell check in code behind
맞춤법 검사 것이다 당신은 또한 유사한 단어를 찾을 수 levenshtein 거리를 사용할 수

을 맞춤법이 틀린

영어로도 soundex는 추천하지 않습니다.

관련 문제