2009-07-29 4 views
7

영화가 나열된 사이트가 있습니다. 당연히 사람들은 영화를 검색 할 때 철자 오류를 범합니다. 물론 영화에 아포스트로피가 있거나 제목에 숫자를 철자하는 문자를 사용하는 문자가 있습니다.php/mysql의 검색에 오타 수정을 구현하는 가장 좋은 방법은 무엇입니까?

이러한 오류를 간과하는 검색 스크립트는 어떻게 얻을 수 있습니까? ? 아마도 WHERE mov_title LIKE '%keyword%'보다 좀 더 지능적인 것이 필요할 것입니다.

전체 텍스트 검색 엔진을 사용하는 것이 좋지만 모든 것들은 정말 복잡해 보입니다. 내 응용 프로그램에 넣는 것이 지구상의 지옥처럼 느껴집니다. 하나를 사용해야한다면 가장 침해가 덜한 코드는 기존 코드에 구현하는 것이 가장 쉽습니다.

답변

6

외부의 전체 텍스트 검색 엔진을 구현해야한다고 생각합니다. MySQL은 전체 텍스트 검색을 잘하지 못합니다. 내가 Lucene 가야한다고 말하고 싶습니다 (tutorials). Zend Framework has an API이 Lucene에 연결되어 배우기 쉽고 활용하기 쉽습니다.

+0

Lucene에는 오타가 있습니까? 스핑크스는 어떨까요? –

+1

예, Lucene은 퍼지 검색 쿼리를 지원합니다. 이 알고리즘은 Levenshtein 거리를 기반으로합니다. Java API는 다음과 같습니다. http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/FuzzyQuery.html – PatrikAkerstrand

+0

Lucene을 사용하는 것 외에는 다른 방법이 있습니까? –

0

나는 php 나 mysql을 사용하지 않았지만, 전문 검색의 대안은 soundex searches 일 수있다.

+0

기본적으로 mysql은 sundex를 지원합니다. – Sethunath

1

MySQL을 사용한다고 가정하면 MySQL에는 이와 같은 기능을 수행 할 수있는 내장 기능이 없습니다.

즉, 전체 텍스트 검색을 직접 구현하거나 타사 전체 텍스트 검색 도구를 사용해야합니다.

  • 당신이 그것을 직접 구현하는 경우, 당신은 (나는 이런 유형의 작업에 거의 잘하지 않은, SOUNDEX 이상을 권하고 싶습니다)을 metaphone 또는 double metaphone 알고리즘에 보일 것의 phoenetic 표현을 저장하기 위해 모든 말. 그러나 자신의 전체 텍스트 검색을 구축하는 것은 희미한 마음가짐을위한 작업이 아닙니다. 자신을 데이터베이스 마법사라고 생각하지 않으면 시도하지 마십시오.
  • 타사 도구가 필요한 경우 Lucene이 좋습니다. 그것은 다양한 언어/플랫폼 including PHP 톤으로 포팅됩니다 - 당신은 자바를 사용할 필요가 없습니다.
관련 문제