[英]How to get MYSQL relevance search result
我是mysql的新用戶,我想通過句子搜索或關鍵字搜索(例如Google搜索)找到相關的搜索結果。
表名稱:affiliate_products
id product_name
--- ------------
1 smartphone micromax 2gb ram
2 smartphone samsung 2gb ram
3 laptop sony ram
4 lenovo a361 smartphone
5 sony z1 dual core smartphone
6 Sony HD Dual Sim Smartphone
我已經使用了如下的一些sql
SELECT *,
CASE
WHEN product_name LIKE '%vbsdf 2gb ram%' THEN 50
WHEN product_name LIKE '%vbsdf%2gb%ram%' THEN 40
WHEN product_name LIKE '%vbsdf%' AND product_name LIKE '%2gb%' AND product_name LIKE '%ram%' THEN 30
WHEN product_name LIKE '%vbsdf%' THEN 20
WHEN product_name LIKE '%2gb%' THEN 15
WHEN product_name LIKE '%ram%' THEN 10
ELSE 0
End as Importance
FROM `affiliate_products`
WHERE `product_name` LIKE '%vbsdf%'
OR `product_name` LIKE '%2gb%'
OR `product_name` LIKE '%ram%'
ORDER BY Importance DESC;
而且還用
Select `product_name` from `affiliate_products` WHERE match(`product_name`) against('+"vbsdf" +2gb' +'ram' in boolean mode)
但是這個SQL查詢不符合我的要求。
我想在下面得到結果
如果搜索關鍵字:Micromax Ram
id product_name
--- ------------
1 smartphone **micromax** 2gb **ram**
2 smartphone samsung 2gb **ram**
3 laptop sony **ram**
內部** **關鍵字已匹配
如果搜索關鍵字:2gb智能手機
id product_name
--- ------------
1 **smartphone** micromax **2gb** ram
2 **smartphone** samsung **2gb** ram
4 lenovo a361 **smartphone**
5 sony z1 dual core **smartphone**
6 Sony HD Dual Sim **Smartphone**
內部** **關鍵字已匹配
if搜索關鍵字:四核智能手機
id product_name
--- ------------
5 sony z1 dual **core** **smartphone**
1 **smartphone** micromax 2gb ram
2 **smartphone** samsung 2gb ram
4 lenovo a361 **smartphone**
6 Sony HD Dual Sim **Smartphone**
內部** **關鍵字已匹配
如果搜索關鍵字:購買索尼四核ram智能手機
id product_name
--- ------------
5 **sony** z1 dual **core** **smartphone**
6 **Sony** HD Dual Sim **Smartphone**
3 laptop **sony** **ram**
1 **smartphone** micromax 2gb ram
2 **smartphone** samsung 2gb ram
4 lenovo a361 **smartphone**
內部** **關鍵字已匹配
請幫助我如何使此sql獲得這種信息結果。 提前致謝。
感謝所有答案提交者。 我有答案,我已經實現了,它工作正常,sql查詢是
SELECT *,
CASE
WHEN product_name LIKE '%smartphone a361%' THEN 6
WHEN MATCH (product_name) AGAINST ('+smartphone +a361' IN BOOLEAN MODE) THEN 5
WHEN product_name LIKE '%smartphone%a361%' THEN 4
WHEN product_name LIKE '%smartphone%' THEN 2
WHEN product_name LIKE '%a361%' THEN 1
ELSE 0
END AS Importance
FROM `affiliate_products`
WHERE status = 'Active'
AND (product_name LIKE '%smartphone%'
OR product_name LIKE '%a361%')
ORDER BY Importance DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.