lucene按時間排序 我在專案中的應用(三)

2021-04-20 07:17:09 字數 1190 閱讀 6194

排序的關鍵點有兩個:

1:首先你要排序的字段必須是被index的,並且是untokenized的。

如:doc.add(

newfield(

"time

", dv.get(

"time

").tostring(), field.store.no, field.index.un_tokenized));

// dv.get("

time

").tostring()是字串,2.2版本的field的建構函式沒有date,long型別,所以要把時間轉化為yyyy-mm-dd或yyyy-mm-dd hh mm ss 形式(不能兩種格式,不然結果有問題),不必將時間轉為數字,沒有那樣的建構函式。搜尋時可選sortfield.int,或別的

2:在檢索時候:

如:   

/*****  排序  *****/

/** 1.被排序的字段必須被索引過(indexecd),在索引時不能 用 field.index.tokenized

*   (用un_tokenized可以正常實現.用no時查詢正常,但排序不能正常設定公升降序)

* 2.sortfield型別

*   score、doc、auto、string、int、float、custom 此型別主要是根據欄位的型別選擇

* 3.sortfield的第三個引數代表是否是降序true:降序  false:公升序

*/sort sort = new sort(new sortfield);

hits hits = searcher.search(querystring,sort);

/** 按日期排序

*/sort sort = new sort(new sortfield);

/*****  過濾器 ******/

queryparser qp1 = new queryparser("content",analyzer);

query fquery  = qp1.parse("我");

booleanquery bqf = new booleanquery();

bqf.add(fquery,booleanclause.occur.should);

queryfilter qf = new queryfilter(bqf);

hits hits = searcher.search(query);

ls 按時間排序

在linux系統中,使用ls命令按時間排序檔案,其實很簡單,如下 ls altr 即可按時間排序當前目錄下的檔案。附,ls命令的引數中文詳解 a 列出目錄下的所有檔案,包括以 開頭的隱含檔案。b 把檔名中不可輸出的字元用反斜槓加字元編號 就象在c語言裡一樣 的形式列出。c 輸出檔案的 i 節點的修改...

js 資料按時間排序

運用了sort 方法進行排序 說明 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串 如有必要 以便進行比較。如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於...

先按時間排序,再按姓名排序 sql語句

將字段依次寫在order by 後面即可 中間用逗號隔開 select from 表 order by time name select from 表 order by time asc name asc select from 表 order by time desc name desc sele...