2012-07-18 4 views
0

MySQL 버전 5.1.57을 실행합니다.MySQL (innoDB) PHP 복수 검색

사용자가 검색 문자열을 삽입 할 수있는 HTML 양식이 있습니다. 이 문자열에 $_SESSION을 작성한 다음 MySQL 쿼리에서 실행합니다. 이 같은 것 :

<?php 

    $sql = mysql_query ("SELECT 
         s.student_firstname, s.student_lastname 
         FROM students s 
         WHERE (
          s.student_firstname LIKE '%$searchstring%' OR 
          s.student_lastname LIKE '%$searchstring% 
          ) 
         AND s.isActive = '1' "); 
?> 

사용자가 여러 단어를 검색 할 때 문제가됩니다. 그럼 내 쿼리는 두 열의 값과 문자열을 비교하려고하기 때문에 실패합니다.

나는 MySQL FULLTEXT 색인 생성에 대해 읽었지만, 이해한다면, MyISAM 테이블 (?)에서만 작동합니다. 내가 가진 환경을 사용하여 여러 단어를 검색하려면 어떻게해야합니까?

+0

당신은 이것을보고 싶어 할 것입니다 : http://stackoverflow.com/questions/1252135/best-way-to-implement-search-functionality-using-innodb?rq=1 –

+0

그리고 이것도 역시 http : // stackoverflow.com/questions/1381186/fulltext-search-with-innodb – Kirzilla

답변

0

공간 ("")에서 검색 한 문자열을 분할하고 각 세그먼트를 쿼리 또는 다른 쿼리에 삽입해야한다고 생각합니다. 예 :

$ str = "word1 word2";

"word1"과 "word2"를 데이터베이스에서 검색 한 후 전체 문자열 "word1 word2"를 먼저 검색하면됩니다. "a, an, the, or ..."와 같은 단어는 찾기를해서는 안되기 때문에이 솔루션을 사용하면 단어 무시 목록을 처리해야합니다.

다른 방법이 있는지 확실하지 않습니다. innoDB 테이블로 ... 가장 좋은 해결책은 분명히 "match against"명령을 사용하는 것이지만, MyISAM의 전체 텍스트 인덱스에서만 사용할 수 있습니다.