2017-09-19 8 views
1
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節なしで説明に現れるものを修正するための正確な数値を得る方法を理解することはできません。一番上の結果に一致するように修正しようとしています

+0

1000,100,10のように乗数を大きくすることができます。 – Barmar

答えて

2

は、値を追加することによって注文する別々の値としてそれらを使用しないでください。そして、あなたはまた、乗算器を必要としない

ORDER BY name DESC, category DESC, description DESC 

+0

これは簡単な解答です。ありがとうございます。 – Stephane

関連する問題