В настоящее время я работаю над поиском в реальном времени, и мне нужно найти части имени в двух столбцах (нам нужно разделить имя и фамилию).Лично я хотел бы, чтобы команда была короткой, однако единственный способ, с помощью которого я смог заставить ее работать, это:
Пользователь ищет
John Doe
Сгенерированный SQL-запрос
SELECT * FROM users WHERE
(first_name LIKE '%john%' OR last_name LIKE '%john%') AND
(last_name LIKE '%doe%' OR last_name LIKE '%doe%');
Поле поиска состоит из одного поля, поэтому я делаю простое разделение по пробелам.В большинстве случаев это не выходит за рамки трех наборов предложений, просто мне было интересно, есть ли лучший способ сделать это.
ПРИМЕЧАНИЕ: Я хотел бы иметь возможность выполнить частичное соответствие,Поэтому я смогу найти Джона Доу, если поищу «Джон До»
РЕШЕНИЕ С помощью Роландо я, тем не менее, нашел решение, опубликованное для всех, ктонаходит это.Следуйте его инструкциям о том, как создать индекс ниже, затем запустите это:
SELECT * FROM users WHERE
(MATCH(first,last) AGAINST ('+john* +do*' IN BOOLEAN MODE))