2011-01-22 10 views
4

投稿テーブルに2つのフィールドがあります - post_titlepost_contentです。今では、標準の全文検索を使用して、いくつかのキーワードを両方のフィールドと照合します。タイトルフィールドにコンテンツフィールドよりも関連性を持たせ、関連性によって結果を並べる必要があります。いくつかのフィールドの関連性を高くして、mysqlのフルテキスト検索での関連性をソート

この目標を達成するには、どのようなmysql構文がありますか?私は、MySQL 5.1

答えて

15

まず使用し、3つのFULLTEXTインデックスを作成:次のようにクエリを構築し、その後

* one on the title column 
* one on the body column 
* one on both title and body columns 

を:

SELECT field1, field2, field3, title, body, 
MATCH (title) AGAINST ('word_to_search') AS rel_title, 
MATCH (body) AGAINST ('word_to_search') AS rel_body 
FROM table_to_use 
WHERE MATCH (title,body) AGAINST ('word_to_search') 
ORDER BY (rel_title*2)+(rel_body) 

これはタイトルに比べて2倍以上の関連性を与えるだろう体。

これは、バックグラウンドから結果を微調整することができるため、コンテンツをユーザーが表示しないタグなどでソートする必要がある場合に非常に便利です。

+2

親指をあげてください。でも、私は3つのインデックスが好きではありません......ちょうどそれが好きではありません... –

+0

この操作の費用はいくらですか?我々は何度も何度も一致している!! –

+0

こんにちはPham、なぜあなたはそれを好きではないと言うことができます、もしそうなら、それを改善する方法? –

関連する問題