Как реализовать полнотекстовый поиск в InnoDB? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть запрос,

например,

столбец имени содержит "Rodrigue Dattatray Desilva".

Я хочу написать запрос таким образом, чтобы

Если я ищу 'gtl' и сопоставляю где-нибудь в строке, он должен показывать результат.

Я знаю, что в php я могу применить патч как '% g% t% l%'.

Но я хочу знать MySql.

Примечание: я могу искать любую вещь, я просто привожу выше пример.

РЕДАКТИРОВАТЬ :

create table Test(id integer, title varchar(100));
insert into Test(id, title) values(1, "Rodrigue Dattatray Desilva");

select * from Test where title like '%g%t%l%';

Рассмотрим приведенный выше случай.Где "gtl" - строка, я пытаюсь найти в заголовке, но строка поиска может быть чем угодно.
gtl - строка, где она существует в текущем заголовке, но не в последовательности.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы можете сделать то же самое в Mysql.

Вы можете использовать ключевое слово , как в MySql.

% - знак процента представляет ноль, один илинесколько символов

_ - подчеркивание представляет один символ

0 голосов
/ 24 мая 2018

Простой ответ заключается в том, что вам нужен дополнительный подстановочный знак:

select * from Test where title like '%g%t%l%';

Запрошенный вами запрос не имеет подстановочного знака после 'l', поэтому будет соответствовать, только если фраза заканчивается на 'l'.

Более сложный ответ заключается в том, что вы также можете использовать регулярные выражения , которые дают вам больше возможностей для поиска.

даже более сложный ответ состоит в том, что производительность этих запросов на совпадение строк имеет тенденцию быть низкой - подстановочные знаки означают, что индексы обычно неэффективны.Если в таблице большое количество строк, полнотекстовый поиск намного быстрее.

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