2012-09-25 7 views
1

회사 이름 목록이있는 큰 테이블이있어서 회사 이름을 통합하는 방법이 필요합니다.변형 회사 이름 처리 방법

  • 맥도날드 레스토랑 = 맥도날드
  • 맥도날드 패스트 푸드 = 맥도날드
  • 맥도날드 음식 1234 = 맥도날드
  • 맥도날드 = 맥도날드
  • McDnld = 맥도날드
  • 맥도날드 농장 같지 않습니다 맥도날드
  • Microsoft -> Microsoft
  • 베어 에센셜 -> 베어에 Es centuals
  • 폴리콤, 주식 회사 -> 폴리콤

아웃 개별적으로 각 규칙을 작성하여이 작업을 수행하기 위해 멀리 있습니까? 또는 적어도 하나의 회사 이름이 특정 회사에 속할 가능성에 대해 일종의 백분율을 생성합니까?

+0

내 대답이 도움이 되었습니까? –

답변

2

봅니다 :

SELECT FROM `company` WHERE `name` LIKE 
    "%McDonalds%Food%" or "%McDonalds%Restaurant%" 

당신은 당신이 명시 적으로 결과 집합에서 %Farm을 제외하고 있기 때문에 케이스별로 처리해야합니다.

+0

McDonalds가 유일한 회사라면 모든 유사 콘텐츠에 대해 모든 회사를 그룹화해야합니다. 각 회사의 모든 유사 콘텐츠에 대한 규칙을 작성할 필요가없는 방식을 기대했습니다. 또한, 나는 그것을 줄임말과 철자 오류로 생각하고 싶습니다. – user1697891

2

평등하지 않으면 훨씬 더 짧을 수 있습니다. 그렇지 않으면 실제로 SQL이 다른 것과 구분할 수있는 방법이 아닙니다. 내가 할 수있는 것은 기본 이름을 보유하고 기본 저장소 ID를 사용하여 하위 테이블에 연결할 글로벌 회사 테이블을 만드는 것입니다.

+0

정성스럽고 앞으로 유지할 수있는 솔루션 – StingyJack

1

짧은 대답은 ... 아니요, 적어도 SQL에서는 아닙니다.

이런 종류의 발견 적 일치 이름은 research의 주제가 많이 있습니다.

대부분의 SQL 구현은 Soundex 기능을 가지고 있지만, 단지 기존의 앵글에 대한 ("잘"의 몇몇 정의) 잘 작동 - Saxon 이름 (세기 전에 널리 사용됨). Soundex의 일부 문제는 http://www.immagic.com/eLibrary/ARCHIVES/GENERAL/LAS_US/L030206B.pdf을 참조하십시오.

+0

감사합니다. 확실히 올바른 길입니다. 나는 다른 언어로 계산하는 것을 꺼려한다. 그러나 Levenshtein과 같은 것들은 MSFT = Microsoft 같은 것들을 어떻게 처리합니까, 아니면 약자에 대한 유사성을 결정하기 위해 또 다른 것이 필요할 것입니까? – user1697891

+0

약자에 약어를 매핑하는 것이 일종의 조회를 필요로한다고 상상해보십시오.어떤 알고리즘이 문맥과 문화적 지식없이 어떻게하면 '할아버지'가 할리 데이비슨의 시세 상징이고 'KO'는 코카콜라의 시세 상징일까요? –

관련 문제