シナリオ:
検索する必要のあるテーブルが5つあります。それぞれに適切なフルテキストインデックス(インデックス?)があります。MATCHとAGAINSTを使用してそれぞれを個別に検索し、関連性スコアで並べ替えることができます。
問題は、5つのテーブルすべての検索結果を組み合わせて織り交ぜ、関連性スコアに基づいて計算したいということです。そのようです:
(SELECT *, MATCH(column) AGAINST (query) as score
FROM table1
WHERE MATCH (column) AGAINST (query))
UNION
(SELECT *, MATCH(column) AGAINST (query) as score
FROM table2
WHERE MATCH (column) AGAINST (query))
UNION
...
ORDER BY score DESC
これは、テーブル1の行数がテーブル2の2倍になる場合を除いて、うまく機能します。したがって、mySQLは関連性の一意性を考慮しているため、テーブル1の結果のスコアはほとんどの場合テーブル2の結果よりも大幅に高くなります。
最終的に:各テーブルの結果に均等に重みを付けたい場合、さまざまなサイズの5つのテーブルの結果のスコアを正規化するにはどうすればよいですか?