解決有效時間的字段的知識查詢

2022-05-26 08:12:13 字數 754 閱讀 7699

需求: 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...