從Lucene 1 4 3公升級到2 0實踐

2021-04-12 13:21:49 字數 1389 閱讀 5088

將以前開發的專案中的lucene從1.4.3公升級到2.0,發現編譯就不通過,於是對照新的api將程式做了修改,目前本人遇到的api更改有

1. indexreader類

delete(int id)方法改名為deletedocuemnt(int id), delete(term t) 方法改名為deletedocuments(term t);

getfieldnames()方法現在必須傳入引數了,型別是indexreader.fieldoption,例如

collection c=reader.getfieldnames(indexreader.fieldoption.all);

2. field類

建構函式field(string name,string value,boolean store,boolean index,....)不復存在,變成了更加

field(

string

name,

string

value,

field.store

store,

field.index

index,

field.termvector

termvector)

相應的field.keyword靜態方法也沒有了,必須採用建構函式直接生成例項;

3. booleanquery

add方法也改了,原有的是add(query q, boolean required, boolean prohibited)現在也更加物件導向了:

add(query q, booleanclause.occur occur);

4.booleanclause

其query屬性不是public的了,需要使用getquery()方法獲取;

4. indexwriter

mergefactor屬性不再是public的了,有了個setmergefactor()方法;

5. datefield

deprecated了,使用datetools;

6.queryparser

parse方法不再是static的了,也就是要先取得queryparser 的例項再呼叫例項的parse()方法。這樣就可以繼承queryparser 寫乙個自己的檢索式解析器了。我寫了乙個來解決做模糊檢索時出現toomanyclauses 異常的問題。主要是利用filter的機制來實現。但實際執行過程中只能解決prefixquery的問題,即title:comput*樣式的檢索式沒有問題(星號在最後),而在做wildcardquery時即檢索式樣式是title:com*er時速度非常慢(資料量4000萬),於是只好在新的解析器中只重寫了getprefixquery()方法。

7. luke

Ubuntu 從15 10公升級到16 04

ubuntu 16.04 lts 代號為 xenial xerus,其最終版於 2016 年 4 月 21 日正式發布,ubuntu16.04 是非常受歡迎的開源作業系統 ubuntu 的第 6 個長期支援版本,其首個 lts 版本發布於 2006 年 6 月。ubuntu 16.04 xenial...

JIRA從6 0 2公升級到7 3 6

備份原有jira的db和安裝檔案,以便回退版本 資料庫備份命令 data mysql bin mysqldump lock tables 0 add drop table u p gzip jira sql.gz jira安裝檔案備份 tar cvzf jira.tar.gz xvdb jira a...

mongodb 從3 0 公升級到3 2

curl k v o mongodb linux x86 64 debian71 3.2.7.tgz 解壓mongodb tar xvzf mongodb linux x86 64 rhel62 3.2.7.tgz 關閉mongod 參考 url 備份舊的bin sudo mv bin bin ba...