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