Я пытаюсь создать хороший запрос соответствия для окна поиска с автозаполнением, используя функцию mysql FULLTEXT index MATCH. Я хотел бы, чтобы он был максимально оптимизирован для производительности и, если возможно, гибок для опечаток и тому подобного (без особых усилий).
Поиск предназначен для пользователей, где у каждого пользователя есть имя и экранное имя. Я хотел бы сопоставить их комбинацию. Например, если имя пользователя - «Гай Кавасаки», а экранное имя - «gkawasaki», то запрос «gkawas» и «Guy K» будет направлен на него. Кроме того, я хотел бы, чтобы результаты были отсортированы по комбинации оценки соответствия и оценки, которую я держу в таблице.
В настоящее время я сделал два разных запроса:
SELECT *, MATCH (name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) AS SCORE
FROM
users
WHERE
MATCH (name) AGAINST ('+Guy +K*' IN BOOLEAN MODE)
ORDER BY SCORE, grade DESC LIMIT 5
SELECT *, MATCH (screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) AS SCORE
FROM
users
WHERE
MATCH (screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE)
ORDER BY SCORE, grade DESC LIMIT 5
Я не такой доволен тем, что использую два запроса, а также не уверен в BOOLEAN MODE и всех знаках "+". Как я могу это улучшить? Как лучше всего реализовать такое автозаполнение?