さて、私は複数の列で全文検索をしようとしています。これは次のような単純なものです。
SELECT * FROM pages WHERE MATCH(head, body) AGAINST('some words' IN BOOLEAN MODE)
今、私は関連性によって注文したいと思います(単語がいくつ見つかりましたか?)これは私がこのようなことで行うことができました:
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY relevance
迷子になった部分が来ましたhead
。コラムの関連性を優先したいと思います。
1つはfor head
、もう1つはforの2つの関連性列を作成できると思いますbody
が、その時点で、テーブルで同じ検索を3回実行します。この関数を作成するためには、パフォーマンスが重要です。クエリは結合され、他のテーブルと照合されます。
だから、私の主な質問は、関連性を検索し、特定の列に優先順位を付けるためのより速い方法はありますか?(そしてボーナスとして、おそらく関連性を列に単語が出現する回数を数えることさえできますか?)
どんな提案やアドバイスも素晴らしいでしょう。
注:これはLAMPサーバーで実行します。(ローカルテストでのWAMP)