2010-03-20 1 views
1

일치하는 항목을 사용하여 MYSQL에서 전체 텍스트 검색을 효율적으로 수행하고 싶습니다. 특히 이진 연산자 (예 : 일부 텍스트는 일치하지만 다른 텍스트는 일치하지 않음)를 사용해야합니다. 그러나 효율적인 트랜잭션 지원이 필요합니다.
그러나 전체 텍스트 검색은 MYISAM에서만 지원되며 Innodb에서는 지원되지 않습니다. 무엇을해야합니까?mysql 전체 텍스트 검색

답변

1

Innodb를 사용해야한다고 가정합니다.

외부 검색 도구를 사용하는 것이 좋습니다. 스핑크스 또는 solr을 사용하면 내 표를 얻을 수 있습니다. 둘 다 mysql 전문 검색보다 일관되게 더 나은 결과를 보여 주며, 훨씬 더 빠릅니다. 나는 스핑크스가 일어나기 쉽고, 특히 mysql에서 오는 것이 더 쉽다고 말한다.

누를 때 둘 중 하나를 설치할 수 없거나 시간이 없다면, mysql의 전체 텍스트 검색을 사용할 수 있도록 myisam 테이블에서 필요한 필드 만 이동하거나 복제 할 수 있습니다.

+0

좋은 조언을 전했지만 테이블이나 열을 옮기거나 복제 할 수 없기 때문에 검색 후 일치하는 결과를 삭제해야합니다. 단일 SQL 문에서 수행하는 것이 바람직합니다. – user121196

1

이것은 대답이 아니라 제안입니다.

큰 데이터베이스가 있거나 고급 기능을 사용하려는 경우 mysql의 전체 텍스트 검색을 사용하지 마십시오. 스핑크스 나 루신을 사용할 수 있습니다.

SPhinx는 일반적으로 더 빠르며 더 가볍지 만 Lucene은 훨씬 더 많은 기능을 가지고 있습니다. 나는 개인적으로 스핑크스를 사용한다.

+0

Lucene은 Lucene을 사용하기 때문에 Java 기반입니다. – TIMEX

+0

스핑크스는 PHP 만 맞습니까? – user121196

+0

lucene 또는 sphinx와 함께 모든 언어를 사용할 수 있습니다. "설정"이라는 사실, lucene은 자바 기반입니다. – TIMEX

0

또한 Ferret은 Apache 검색 라이브러리의 루비 구현물 일 수 있습니다. 속도 테스트에 따르면, 그것은 또한 훨씬 빠릅니다.