Как MySQL руководство говорит:.
Фраза, заключенная в двойные кавычки («"») символов соответствует только те строки, которые содержат эту фразу буквально, как это было напечатано
Давайте посмотрим на примере таблицы:
mysql> select * from articles;
+----+-----------------------+------------------------------------------+
| id | title | body |
+----+-----------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+------------------------------------------+
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"database comparison"' IN BOOLEAN MODE);
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+-------------------+------------------------------------------+
вопросам заказа, когда слова цитируются:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('"comparison database"' IN BOOLEAN MODE);
Empty set (0.01 sec)
Когда мы убираем цитаты, он будет искать строки, в которых содержатся слова "базы данных" или "сравнения":
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('database comparison' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
Заказать сейчас не важно:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('comparison database' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
Если мы хотим получить строки, содержащие слово «PostgreSQL» или выражение «сравнение баз данных», мы должны использовать этот запрос:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('PostgreSQL "database comparison"' IN BOOLEAN MODE);
+----+---------------------+------------------------------------------+
| id | title | body |
+----+---------------------+------------------------------------------+
| 1 | PostgreSQL Tutorial | DBMS stands for DataBase ... |
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+---------------------+------------------------------------------+
fiddle
Убедитесь, что слова, вы ищете, не в list of stopwords, которые игнорируются.
Здравствуйте, user4035. Я понимаю основы полнотекстового поиска и то, как это работает. Моя задача - получить результаты, как в вашем последнем примере, но проблема в том, что я помещаю строку, содержащую двойные кавычки. Результаты не содержат полную фразу, а слова во фразе. – Vasko
@Vasko Это очень странно, потому что для меня, когда я помещаю слова в кавычки, MySQL ищет точную фразу, а не слова. Скопируйте мою таблицу примеров из скрипки и попробуйте последний запрос в вашей системе. Дайте мне знать, как это работает. – user4035
Я использовал http://sphinxsearch.com/ вместо встроенного поиска FULLTEXT mySql, и теперь приложение гораздо более отзывчивое. Спасибо вам за ваш подробный ответ. – Vasko