多關鍵字查詢並根據匹配程度排序
阿新 • • 發佈:2019-01-28
多個關鍵字,根據包含的關鍵字個數從多到少排列。
即將包含關鍵字多的記錄放在前面,包含少的關鍵字放在後面,不包含關鍵字的則不顯示。比如一個表包含學號、姓名、性別、出生年月、籍貫、專業、學院等等資訊。
現在輸入多個關鍵字如"江蘇省 女 1990年"則將同時包含3個關鍵字的放在最前,包含2個關鍵字的其次,只包含1個關鍵字的放最後。另外,要求結果除了按照包含的關鍵字降序排列的同時再按學號升序排列。實現方法:
對每條記錄計算匹配的關鍵字的個數,由於每次關鍵字動態變化,可在程式中用程式碼控制sum函式中的計算內容。
cnt記錄包含的關鍵字個數,最後根據cnt降序,同時根據id升序排列。
另外,Andriod中的sqlite不支援instr函式,可以用like 函式,如:like('%1989年%',info)>0
select * from(select id,sex,birthyear,address,major,sum( (case when instr(info,'江蘇省')>0 then 1 else 0 end) +(case when instr(info,'女')>0 then 1 else 0 end) +(case when instr(info,'1990年')>0 then 1 else 0 end) ) as cnt from master group by id) as temp where cnt>0 order by cnt desc,id asc
測試過程如下:
原始資料的一部分欄位如下:
當關鍵字是“江蘇省 女 1990年”時,檢索出的結果: