Lucene 自定義過濾器Filter

2021-07-15 06:17:37 字數 1307 閱讀 8133

lucene中查詢(query)和過濾(filter)有相似之處,查詢能處理的過濾也可以完成。不同之處在於查詢時帶有評分操作,返回的結果集有相關性評分,而過濾返回的結果集沒有相關性評分,即返回結果是無排序的。

特定項範圍過濾器,如「a-m」或者「o-z".

termrangefilter filter = new termrangefilter(field,new bytesref("h"),new bytesref("h"),true,true);

topdocs docs = searcher.search(new matchalldocsquery(),filter,10);

(2)numericrangefilter

數值範圍過濾器

numericrangefilterfilter=numericrangefilter.newdoublerange(field, 10d, 40d, true, false);

topdocs topdocs=searcher.search(new matchalldocsquery(),filter,10);

(3)

fieldcacherangefilter

域快取範圍過濾器

filter filter=fieldcacherangefilter.newdoublerange(field, 20d, 50d, true, true);  

topdocs topdocs=searcher.search(new matchalldocsquery(),filter,10);

(4)

fieldcachetermsfilter

域快取過濾特定項過濾器

filter filter=new fieldcachetermsfilter(field, new string);   

topdocs topdocs=searcher.search(new matchalldocsquery(),filter,10);

(5)

使用topdocs topdocs=searcher.search(new matchalldocsquery(),filter,10);

4.自定義過濾器

自定義過濾器mycustomfilter,繼承filter類即可。參考:

自定義過濾器

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,如下.先定...

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...

自定義時間過濾器

實現步驟 第一步,引導入 datetime 第二步,引入乙個建立時間,或者 直接寫死乙個時間 第三步,註冊乙個時間過濾器 第四步,實現過濾器的 第五步,在模板中呼叫 示例 一 字典中的 create time datetime 2017,10,20,16,19,0 二 過濾器 def handel ...