MySQL полнотекстовый поиск, где в - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь создать полнотекстовый поиск с MySQL. Мой запрос выглядит следующим образом.

SELECT * FROM customers WHERE MATCH (name, first_name, street, city)
                              AGAINST ('$parameter' IN boolean MODE)

Если я запрашиваю, например, Peter все работает нормально. Но если я наберу только начало моей строки поиска (Pete), я получу пустой результат.

Как я могу получить строки, содержащие мою строку, а не только строки, где строка точно такая же?

Ответы [ 2 ]

1 голос
/ 29 марта 2019

использование NATURAL LANGUAGE MODE

SELECT * FROM customers WHERE MATCH (name, first_name, street, city) AGAINST ('$parameter' IN NATURAL LANGUAGE MODE)

Полнотекстовый поиск на естественном языке интерпретирует строку поиска как свободный текст (естественный человеческий язык), и никаких специальных операторов не требуется. Полнотекстовый поиск - это поиск на естественном языке, если указан модификатор IN NATURAL LANGUAGE MODE (см. Следующий синтаксис) или нет. Функция MATCH () ищет строку в текстовой коллекции (набор из одного или нескольких столбцов, включенных в индекс FULLTEXT.). Для каждой строки в таблице MATCH () возвращает значение релевантности; то есть мера сходства между строкой поиска (заданной в качестве аргумента функции AGAINST ()) и текстом в этой строке в столбцах, названных в списке MATCH ()

0 голосов
/ 09 мая 2019
MATCH (...) AGAINST ('$parameter*' IN BOOLEAN MODE)

MATCH (...) AGAINST ('Pete*' IN BOOLEAN MODE)

Подстановочный знак * может быть помещен в end строки, чтобы соответствовать чему-либо, начинающемуся с него. Это будет соответствовать

Pete
Peter
petechiae
peteforamerica
petethecatbooks
péteux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...