мне нужен MySQL запрос для поиска текста для имени и фамилии ... Это запрос:Mysql индекс строки
SELECT * FROM people WHERE CONCAT(name,' ',surname) like 'John%'
or CONCAT(name,' ',surname) like '% John%'; --mind the space in second like
Этот запрос должен найти «Джон Фокс» и «Fox Джон» и «Джон Фокс Джо »и« Джо Джон Фокс »и так далее. Это работает отлично, но для больших таблиц я думаю, что я должен добавить и индексировать ... Я прав? Я читал, что индексы btree полезны только для синтаксиса like 'John%'
, а не для like '% John%'
. Поэтому, возможно, не может быть полезно добавить новый столбец из CONCAT (name, '', surname) для нового индекса.
Я хотел бы знать, что лучше всего подходит для этой проблемы с текстовым поиском.
PS: Я использую таблицы innodb, поэтому я не могу использовать полнотекстовые индексы.
Несколько лет назад я использовал Полный текст с MyISAM, я нашел некоторые проблемы с стоп-слова, как «и» «тем» и так далее, потому что они были проигнорированы поисковой системой. Мой поиск должен включать в себя эти слова, настраивается ли это? – Tobia
Вы можете изменить стоп-слова для каждой таблицы: http://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html – Mikpa