2011-07-25 17 views
4

mysql FULLTEXTインデックスマッチ機能を使用して自動補完検索ボックスを作成する際に、良い一致クエリを作成しようとしています。 私は非常にパフォーマンスが最適化され、可能であればタイプミスなどに柔軟に対応したいと思います。FULLTEXTのmysqlインデックスを使用した自動補完クエリ

検索は、各ユーザーが名前と画面名を持つユーザー向けです。私はそれらの組み合わせにマッチしたいと思います。たとえば、ユーザー名が「Guy Kawasaki」で、画面名が「gkawasaki」の場合、「gkawas」と「Guy K」という問合せが指示されます。また、結果をマッチスコアと私がテーブルで保持しているグレードとの組み合わせでソートしたいと思います。

現在、私がやったことは二つの異なるクエリです:私は2つのクエリを使用してもそれほどわからないBOOLEAN MODEについて、すべてのだという事実にとても満足していない

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 

"+"記号。これをどのように改善できますか?このようなオートコンプリートを実装する最良の方法は何ですか?

答えて

2
SELECT *, MATCH (name, screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) AS SCORE 
FROM users 
WHERE MATCH (name, screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) 
ORDER BY SCORE, grade DESC 
LIMIT 5 

クエリのMATCH()部分に列名を追加することができます。

関連する問題