SELECT
MATCH(`product_name`) AGAINST ('leica' IN BOOLEAN MODE) * 100 AS name,
MATCH(`product_category_name`) AGAINST ('leica' IN BOOLEAN MODE) * 50 AS category,
MATCH(`product_description`) AGAINST ('leica' IN BOOLEAN MODE) * 20 AS description
FROM products
WHERE MATCH (`product_name`, `product_category_name`, `product_description`) AGAINST ('leica' IN BOOLEAN MODE)
ORDER BY (name)+(category)+(description) DESC LIMIT 0, 24
これは1つのケースを除いて素晴らしいです。製品が名前と説明の両方に「ライカ」を持っている場合、製品は上に衝突します。 product_nameまたはproduct_categoryに一致しない場合にのみ、説明に要因を入れるようにしたいと思います。私は* -5を何かに加えることを考えていましたが、何らかのIF節なしで説明に現れるものを修正するための正確な数値を得る方法を理解することはできません。一番上の結果に一致するように修正しようとしています
1000,100,10のように乗数を大きくすることができます。 – Barmar