Автозаполнение запроса с использованием FULLTEXT индекса mysql

Я пытаюсь создать хороший запрос соответствия для окна поиска с автозаполнением, используя функцию 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 и всех знаках "+". Как я могу это улучшить? Как лучше всего реализовать такое автозаполнение?

5
задан Noam 25 July 2011 в 17:33
поделиться