2017-09-19 11 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 

이렇게 한 경우를 제외하고는 훌륭합니다. 제품에 이름과 설명에 'leica'가 있으면 상단에 부딪칩니다. 설명이 product_name 또는 product_category에서 일치하지 않는 경우에만 설명을 넣으 려합니다. 어떤 것에 * -5를 더하는 것에 대해 생각하고 있었지만 어떤 종류의 IF 절없이 설명에 나타나는 것을 수정하는 정확한 숫자를 얻는 방법을 알 수는 없습니다. 그런 다음 당신은 또한 승수가 필요하지 않습니다일치 결과 ... 상위 결과를 수정하려고 시도합니다.

ORDER BY name DESC, category DESC, description DESC 

:

+0

1000, 100, 10처럼 승수를 더 크게 만들 수 있습니다. – Barmar

답변

2

에 의해 주문 별도의 값으로이를 사용, 값을 추가하지 마십시오.

+0

그건 아주 간단한 답변입니다. 감사합니다. – Stephane