일치하는 항목을 사용하여 MYSQL에서 전체 텍스트 검색을 효율적으로 수행하고 싶습니다. 특히 이진 연산자 (예 : 일부 텍스트는 일치하지만 다른 텍스트는 일치하지 않음)를 사용해야합니다. 그러나 효율적인 트랜잭션 지원이 필요합니다.
그러나 전체 텍스트 검색은 MYISAM에서만 지원되며 Innodb에서는 지원되지 않습니다. 무엇을해야합니까?mysql 전체 텍스트 검색
답변
Innodb를 사용해야한다고 가정합니다.
외부 검색 도구를 사용하는 것이 좋습니다. 스핑크스 또는 solr을 사용하면 내 표를 얻을 수 있습니다. 둘 다 mysql 전문 검색보다 일관되게 더 나은 결과를 보여 주며, 훨씬 더 빠릅니다. 나는 스핑크스가 일어나기 쉽고, 특히 mysql에서 오는 것이 더 쉽다고 말한다.
누를 때 둘 중 하나를 설치할 수 없거나 시간이 없다면, mysql의 전체 텍스트 검색을 사용할 수 있도록 myisam 테이블에서 필요한 필드 만 이동하거나 복제 할 수 있습니다.
이것은 대답이 아니라 제안입니다.
큰 데이터베이스가 있거나 고급 기능을 사용하려는 경우 mysql의 전체 텍스트 검색을 사용하지 마십시오. 스핑크스 나 루신을 사용할 수 있습니다.
SPhinx는 일반적으로 더 빠르며 더 가볍지 만 Lucene은 훨씬 더 많은 기능을 가지고 있습니다. 나는 개인적으로 스핑크스를 사용한다.
Lucene은 Lucene을 사용하기 때문에 Java 기반입니다. – TIMEX
스핑크스는 PHP 만 맞습니까? – user121196
lucene 또는 sphinx와 함께 모든 언어를 사용할 수 있습니다. "설정"이라는 사실, lucene은 자바 기반입니다. – TIMEX
또한 Ferret은 Apache 검색 라이브러리의 루비 구현물 일 수 있습니다. 속도 테스트에 따르면, 그것은 또한 훨씬 빠릅니다.
좋은 조언을 전했지만 테이블이나 열을 옮기거나 복제 할 수 없기 때문에 검색 후 일치하는 결과를 삭제해야합니다. 단일 SQL 문에서 수행하는 것이 바람직합니다. – user121196