2013-02-23 4 views
0

최근 중복 된 고객 레코드를 찾기위한 인덱싱 알고리즘을 제안했습니다. 짧게 짧게, 이것은 모두 잘 작동합니다.인덱싱 문자열 및 국제화

그러나 문제는 "Diviér"가 "Divier"와 일치해야하거나 "Aether"가 "Æther"와 일치해야한다는 것입니다. libicu 또는 boost :: locale에서 분음 부호 제거가 가능하고 wstring을 사용하기 때문에 문제가되지 않습니다. 그러나, 여기 내 문제가 있습니다 : 단어를 정규화/라틴어로 바꾸는 것은 더 이상 일치하지 않을 수도 있다는 의미에서 바뀝니다. 이 이름이 받아 들일 수 있는지에 대한 의견을 듣고 싶습니다 ...

또한 누군가 중국 이름이 있다면? 이 방법으로 정규화되지는 않을까요?

이 접근 방법에 대한 권장 사항이 있습니까?

답변

1

주소를 많이보아야하며 이름을 많이 사용하지 않아야합니다. 결국에는 이름이 오도 될 수 있습니다. 예 : 국가에 따라 중국어, 러시아어 또는 일본어 문자의 표기가 다를 수 있습니다. 그런 다음 때로는 이름 필드가 인체의 전체 이름 (특히 Indish 이름과 공통)을 캡처하여 임의의 일종의 겉으로 보이는 임의의 구분을 만들 수 있습니다. 때로 사람들은 중간 이름을 언젠가는 언젠가는 언젠가는 그렇지 않을 수도 있습니다. 그리고 때로는 적절하지만 다른 이름을주는 오자가 있습니다.

제 생각에 이름은 중복을 찾는 데 가장 중요하지 않습니다.

+0

글쎄, 실제로 데이터 (이름, 주소, 도시, 우편 번호, 전화 번호 등) 전체를 사용하고 있습니다. 그러나 여기서 간단하게하기 위해 이름을 예제로 사용했습니다. 또한 각 필드의 무게를 다르게하는보다 선별적인 비교를 위해 여러 알고리즘을 사용합니다. 인덱스는 선택 필드를 기반으로하며 복잡성을 피하기 위해 복잡한 루틴의 필터 역할 만합니다. – namezero

+0

그래서 모든 필드를 보면 더 쉽습니다. 지역/문화 특정 정규화를 소개해야합니다. –

+0

그게 적절한 해결책 같아. 특정 문화권 정규화를위한 일종의 목록이있는 출처에 대해 알고 있습니까? – namezero