Mysql
MySQL如何通過多個關鍵字對單列進行優先級排序
我有一列產品標題,我必須按輸入字元串中匹配的最大單詞的結果排序
Select Id, tittle, description,....., Case When a.title REGEXP [[:<:]]Men's shoes[[:>:]] Then 0 When a.title REGEXP [[:<:]]Men's[[:>:]] Then 1 When a.title REGEXP [[:<:]]shoes[[:>:]] Then 2 END AS priority From products . . . Order by priority ASC
它工作正常,當字元串按順序排列時,但我希望按最大匹配字數排序,或者將第一優先級分配給具有最大字匹配的記錄
全文搜尋有很好的站點,但需要一些學習,但對於包含大量文本的大表來說很有趣。
您也可以組合列進行搜尋
還要檢查手冊
一個小例子它是如何工作的
CREATE TABLe t1 (title varchar(20), FULLTEXT (title))
insert into t1 VALUES ("men\'s t'shirts"),("men\'s socks"),("men\'s socks short")
SELECT * , (IF(MATCH (title) AGAINST ("men\'s" IN NATURAL LANGUAGE MODE) > 0,1,0) )+ (IF(MATCH (title) AGAINST ('socks' IN NATURAL LANGUAGE MODE) > 0,2,0) ) + (IF(MATCH (title) AGAINST ("+men\'s +socks" IN NATURAL LANGUAGE MODE) > 0.03,3,0)) as weight FROM t1
標題 | 重量 :---------------- | -----: 男士T卹| 高解析度照片| CLIPARTO 1 男士襪子| 高解析度照片| CLIPARTO 6 男士短襪| 高解析度照片| CLIPARTO 6
db<>fiddle here 對於更大的搜尋和更多的可能性,您還可以查看elasticsearch