需求: solr索引中的每個文件都有乙個時間字段,這個時間欄位是知識的有效期時間.如creatime;
要求在查詢的時候將當前時間和creatime這個欄位的時間做對比,如果當前時間大於creattime這個時間,說明這個知識為過期知識,小於這個時間段的為有效知識.我們查詢有效知識.
解決方法:我採用函式查詢的方式,使用ms函式,先算出creatime和當前時間now的差creatime-now:ms(creatime,now),然後取倒數:recip(ms(creatime,now),3.16e-11,1,1).其中3.16e-11 為 3.16*e-12的表示法.得出的數字範圍是在(0,1)區間.採用functionrangeqparserplugin外掛程式 對函式值進行過濾.
最終過濾查詢:fq=recip(ms(creatime,now),3.16e-11,1,1).
通過函式建立乙個範圍查詢:
其他引數:
l
, 下限範圍,可選)
u
, 上限範圍,可選)
incl
, 包含下限:true/false,可選,預設為true
incu
, 包含上限:true/false,可選,預設為true
例子:myfield
過濾查詢例子::fq=sum(user_ranking,editor_ranking)
這是我的解決方案,如有更好的解決方法,請指出.謝謝!
關於django的orm查詢中時間字段查詢
queryset yourobject.objects filter 時間欄位名稱 lt start 2 lte 小於等於 queryset yourobject.objects filter 時間欄位名稱 lte start 3 gt 大於某個時間 now datetime.datetime.no...
rafy中的列舉欄位in查詢解決方法
public virtual eitransactionlist getbypage liststatus paginginfo pi null var f queryfactory.instance var t f.table 實體表 var q f.query selection t.star ...
解決MyBatis 多表聯合查詢,字段重複的問題
zsjc1 和zsjc2 是一對多關係 data tablename zsj c1 public class zsjc1 data tablename zsj c2 public class zsjc2zsjc1 實體類id,name與zsjc1實體類id,name欄位一樣,zsjc1 與zsjc1...