0

特定の列/フィールドの関連性に基づいた結果の重み付けを使用して、複数の列に全文検索を実装する必要があります。

私が遭遇したすべてのソリューションは、関連性を計算するために単一列のインデックスを使用し、WHERE句には 1 つの複数列のインデックスを使用しているようです。参照: https://stackoverflow.com/a/600915/168719またはhttps://stackoverflow.com/a/6305108/168719

ここに私のクエリがあります:

SELECT MATCH(name) AGAINST (text) as relevance_name, 
MATCH(description) AGAINST(text) as relevance_description, 
MATCH(description_long) AGAINST (text) as relevance_description_long 
FROM products WHERE

そして、私は次の選択に直面しています:

a)

MATCH(name, description, description_long) AGAINST (text) > 0

b)

MATCH(name) AGAINST (text) > 0 
OR MATCH(description) AGAINST (text) > 0 
OR MATCH(description_long) AGAINST (text) > 0

その後、ソート節が続きます。

ORDER BY (relevance_name * 2 + 
relevance_description * 3 + 
relevance_description_long * 4) / 9

問題は、 bに対するa (明らかに好ましい方法)の優位性は何ですか?

aでは、(検索可能なすべての列にわたって) 別のフルテキスト インデックスを作成する必要があり、明らかにより多くのディスク領域が必要になります。

利点は何ですか?それはパフォーマンスの問題ですか?それとも検索品質?

4

1 に答える 1