2013-10-11 3 views
0

MySQL 테이블 중 하나에서 상점 이름을 검색하려고하는데, 테이블에 fullname이라는 필드가 있습니다. 현재로서는 MySQL의 SOUNDS LIKE 메소드를 사용하고 있지만 실패한 예는 다음과 같습니다.열에서 MySQL 스마트 텍스트 검색을 수행하는 방법은 무엇입니까?

문자열 바나나 샵이 있습니다. 그런 다음 'nana'또는 'bananas'쿼리로 SOUNDS LIKE를 사용하면 결과가 나지 않습니다. 여기 내 현재 쿼리는 다음과 같습니다 똑똑 그래서 오타의도 여전히 일치하는 것입니다 MySQL의에서이 같은 간단한 검색을 할 수있는 더 좋은 방법은

SELECT `fullName` FROM `shop` WHERE `fullName` SOUNDS LIKE 'nana'; 

가?

답변

0

SOUNDS LIKE에 의해 사용 된 고대의 경미한 SOUNDEX 알고리즘은 접미사 사운드를 처리하지 않습니다. 즉 nanabanana과 일치하지 않으며 일치 할 수 없습니다. 그러나 bananibanana과 일치합니다.

음절 수가 같지 않으면 두 개의 발음이 반드시 동일하지 않습니다. 스미스, 슈미트, 슈미트와 같은 성을 일치시키는 데는 모두 동일한 SOUNDEX 값을가집니다.

SOUNDEX를 '스마트 텍스트 검색'이라고하는 것은 과장입니다. http://en.wikipedia.org/wiki/Soundex

MySQL FULLTEXT 검색을 고려해 볼 수 있습니다. 이것은 특정 양의 문구 매칭을 수행합니다. 즉, "banana shop"과 "banana slug"가 칼럼에있는 경우 "banana"라는 단어는 두 값을 일치시키는 샷을 사용합니다.

FULLTEXT에주의하십시오. 검색중인 테이블에 백 줄이 2 백 개 미만일 때 반 직관적으로 작동합니다.

하지만 이는 타자 친숙한 단어 일치자가 아닙니다. 당신이 묻는 것은 그렇게 쉬운 것이 아닙니다.

Levenshtein 알고리즘 (당신이 찾을 수있는)을 고려해 볼 수 있습니다. 그러나 제대로 작동하려면 털이 있어야합니다.

+0

질문에 약간의 덧글이 있음 – adit

+0

에 답변을 추가했습니다. –

+0

답변을 주셔서 감사합니다. 탄성 검색 또는 lucene에 대한 경험이 있습니까? – adit

관련 문제