通過SQL實現模糊查詢按結果的匹配度排序


前幾天接到一個新的需求:在模糊查詢的情況下實現,查詢結果按照精准度高低進行排序展示

即:結果與查詢關鍵字完全一致的優先級最高,其次按照查詢結果中關鍵字出現的詞頻從高到低排序。

之前有接觸過搜索一般都有專門的搜索框架來做搜索的事情,比如solr,ES。

現在只在一個功能的模糊查詢上來做:研究了一下,還是可以實現的,例子如下:

select distinct name,age from (

select id,name,age from teacher t where namelike '%小%'

union all

select id,name,age from student s where namelike '%小%')as aa

order by (

case when aa.name =  '小' then 1 

when aa.name like  '%小%'  then 2 else 0 end

) asc,(select LENGTH(aa.name) - LENGTH(REPLACE(aa.name,'小',''))) desc;

當然,還可以根據自己的業務需求加其他的過濾條件。(僅供參考!)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM