私は MySQL を使用して PHP でアプリケーションを構築しています。ユーザーは記事を投稿でき、5 つ星システムで評価することもできます。ユーザーがテキスト検索を行ったときに高評価を少し上に移動させて、より良い記事を見つけやすくしたいと考えていました。
MySQLFULL TEXT
インデックスを使用して検索を実行しているため、関連性スコアはその検索から得られます。
スター評価を使用して検索の関連性を改ざんするにはどうすればよいでしょうか (ユーザーを苛立たせることなく)。
私は単純な乗算を行って、関連性の評価時間を上げました。これにより、次のように、5 つ星の記事は 1 つ星よりも 5 倍関連性が高くなります。
SELECT *, (MATCH (title, tags, content) AGAINST('search terms')) *
rating AS score
FROM articles WHERE MATCH (title, tags, content) AGAINST('search terms')
ORDER BY score DESC
それは良い考えですか?
また、関連性に評価の対数を掛けることも考えました (プラス 1、評価がeを下回ったときに関連性が低下するのを避けるため)。そのため、増加はそれほど大きくありません。また、関連性が高い場合、評価の低い記事の可能性が高くなります。ステートメントは次のようになります。
SELECT *, (MATCH (title, tags, content) AGAINST('search terms')) *
(1 + LN(rating)) AS score
FROM articles WHERE MATCH (title, tags, content) AGAINST('search terms')
ORDER BY score DESC
どのアプローチを使用する必要がありますか? より良い方法はありますか?それとも、ユーザーの評価を無視して用語の関連性のみを使用する方がよいでしょうか?
(余談ですが、レーティングのない記事はどうなりますか?)