mysql FULLTEXT поиск нескольких слов - PullRequest
13 голосов
/ 16 июля 2011

Я никогда не слышал прямого ответа на этот вопрос, мне просто нужно выполнить ПОЛНЫЙ ТЕКСТ для поиска пары столбцов с несколькими словами «Имя Фамилия»

$sql = mysql_query("SELECT * FROM 
                    patient_db 
                    WHERE MATCH ( Name, id_number )
                    AGAINST ('% $term %' IN BOOLEAN MODE);");

Но он не может выполнить запрос, если явведите здесь более одного слова.

Ответы [ 2 ]

19 голосов
/ 16 июля 2011
$sql = mysql_query("SELECT * FROM 
         patient_db WHERE 
         MATCH ( Name, id_number ) 
         AGAINST ('+first_word +second_word +third_word' IN BOOLEAN MODE);");

и если вы хотите сделать точный поиск:

$sql = mysql_query("SELECT * 
                  FROM patient_db 
                  WHERE MATCH ( Name, id_number ) 
                  AGAINST ('"exact phrase"' IN BOOLEAN MODE);");
4 голосов
/ 16 июля 2011
SELECT * 
FROM patient_db 
WHERE MATCH ( Name, id_number ) 
      AGAINST ("Firstname Lastname" IN BOOLEAN MODE);

Двойные кавычки важны. Это ищет буквально фразу «Имя Фамилия». Вам не нужны знаки процента.

Если вы ищете «Имя бла-бла-бла Фамилия бла-бла», то выражение AGAINST() должно выглядеть так:

AGAINST ('+Firstname +Lastname' IN BOOLEAN MODE);

Для получения дополнительной информации ознакомьтесь с документами MySQL по полнотекстовому поиску .

Другое дело: почему в вашем совпадении есть столбец id_number?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...