1.9
到
2.0
的改動不是很多,主要是廢棄了一些
API
,
2.0
起了一個過渡的作用。
2.1
是在
2.0
基礎(chǔ)上做了很多的改進(jìn),提升了性能,修復(fù)了一些
Bug
等。
?
Lucene2.1
在索引的格式上做了一些改進(jìn),所以舊版本的
Lucene
是無法訪問
2.1
版的索引文件。但是
2.1
版本的可以讀寫舊版本的索引文件。保持向下的兼容性。這點需要我們在使用時注意。
?
下面簡單的列出一些新的特性:
1.??????
's'
和
't'
從默認(rèn)的
stopwords
中移掉了。但是依然還有
'a'
也可以會有同樣的問題,所以分詞需要針對自己的應(yīng)用進(jìn)行自定義。
2.??????
更新了
StandardAnalyzer
中的針對
CJK
的
Unicode
代碼范圍。用處不大,因為我們中文需要自己開發(fā)分詞。
3.??????
允許在
QueryParser
的最前面使用通配符
(*, ?)
,之前是不允許的。這個比較有意義,可以實現(xiàn)一些模糊搜索。
4.??????
QueryParser
默認(rèn)使用
ConstantScoreRangeQuery
執(zhí)行范圍查詢。增加了
useOldRangeQuery
屬性允許在需要的情況下使用舊的
RangeQuery
5.??????
對于
WildcardQuery
,如果一個
term
不包含任何的
?
或者
*
,之前會拋出異常,現(xiàn)在會執(zhí)行一個
TermQuery
。
6.??????
去掉了
deprecated
的
doc.fields()
方法和
Enumeration
7.??????
write lock
現(xiàn)在默認(rèn)的位置是索引的目錄,簡單命名為
write.lock
8.??????
新的
FieldSelector API
,相關(guān)的
IndexReader
和實現(xiàn)都發(fā)生了變化。新的
Fieldable
接口被用作字段的延遲加載上。
9.??????
使用
MultiFieldQueryParser
的時候可以為不同的
field
指定不同的
boosts
10.??
新的方法
IndexWriter.addIndexesNoOptimize()
在新添加一個新的
segments
的時候,只進(jìn)行合并,不進(jìn)行優(yōu)化。
11.??
QueryParser
允許在引號和短語中使用反斜線
12.??
增加了方法
RAMDirectory.sizeInBytes(), IndexWriter.ramSizeInBytes()
和
IndexWriter.flushRamSegments()
,允許應(yīng)用程序控制索引時緩存文檔對內(nèi)存的使用,這些蠻有用的,可以用于監(jiān)控索引的過程。
13.??
QueryParser
解析
*:*
為匹配所有的內(nèi)容
14.??
可以通過命令行在已經(jīng)存在的索引文件中修改和刪除
field
15.??
IndexWriter
增加了方法來高效得更新
documents
。增加
IndexWriter.flush()
方法將內(nèi)存的內(nèi)容刷新到文件系統(tǒng)。
??? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 小兵 2007-3-22