1.9 RC1 数据挖掘研究院
注:lucene2.0发布版本并不是100%的和1.4.3版兼容。也就是说在你用2.0版本的Lucene开发包替换原来的1.4.3版本时,应该让你的应用程序首先和1.9的兼容。 数据挖掘研究院
使用前提: 数据挖掘研究院
1. 编译和使用Lucene需要 Java1.4 或以上版本。
Lucene 1.9 在运行时的变化:
1. 模糊搜索 FuzzyQuery 不再抛出 TooManyClauses 异常。当 FuzzyQuery 扩展多于 BooleanQuery.maxClauseCount 时 ,只有最相关的term会被重新写入query,因此避免了异常的抛出。 (Christoph) 数据挖掘研究院
2. 把系统属性 "org.apache.lucene.lockdir" 改为 "org.apache.lucene.lockDir"。(Bernhard)
3. RangeQueries 和 FuzzyQueries 默认被转换成小写。 (as it has been the case for PrefixQueries and WildcardQueries before).使用 setLowercaseExpandedTerms(false) 来禁止大小写自动转换的行为;同样也影响 PrefixQueries 和 WildcardQueries。(Daniel Naber)
4. 在使用 MultiSearcher 的时候文档频率也可以正确计算,全局性的计算各个 subsearchers 和 indices 中。以前计算的时候只是 locally 的,每个 index 的计算是分开的,这样引发的一个问题是:在多个indices中rank 是不相等的。 数据挖掘研究院
(Chuck Williams, Wolf Siberski via Otis, bug #31841)
5. 在打开 IndexWriter 使用 create=true 参数,Lucene 现在只是删除index目录中属于Lucene自己的文件。( 判断文件名后缀的方式 )。原来是删除整个目录中的所有文件。(Daniel Naber and Bernhard Messer, bug #34695)
6. IndexReader 的版本 ,可以通过 getCurrentVersion() 和 getVersion() 返回。以前如果是新的indexes 那么返回的是0 。现在则用系统的毫秒数来初始化。 (Bernhard Messer via Daniel Naber) 数据挖掘实验室
7. 一些默认的初始化值不再允许通过 system properties 来设置。相反在 IndexWriter 中新增了相关的 set/get 方法来设置相关属性。主要包括以下属性: 数据挖掘研究院
在 IndexWriter 的 getter/setter 方法中:
org.apache.lucene.writeLockTimeout, org.apache.lucene.commitLockTimeout,
org.apache.lucene.minMergeDocs, org.apache.lucene.maxMergeDocs, 数据挖掘研究院
org.apache.lucene.maxFieldLength, org.apache.lucene.termIndexInterval, 数据挖掘研究院
org.apache.lucene.mergeFactor, 数据挖掘研究院
还有 BooleanQuery 的 getter/setter 方法:
org.apache.lucene.maxClauseCount
还有 FSDirectory 的 getter/setter 方法: 数据挖掘研究院
disableLuceneLocks
(Daniel Naber)
8. 修改了 FieldCacheImpl 方法使用用户提供的 IntParser 和 FloatParser,来替代使用 Integer 和 Float 的相关方法。 数据挖掘研究院
(Yonik Seeley via Otis Gospodnetic)
9. 高级搜索返回的 TopDocs 和 TopFieldDocs 不再规范scores。
(Luc Vanlerberghe via Yonik Seeley, LUCENE-469) 数据挖掘研究院
1.9 的新特性: 数据挖掘研究院
1. 增加了对压缩字段存储的支持。(patch #31149)
(Bernhard Messer via Christoph) 数据挖掘研究院
2. 增加了对压缩字段存储的支持。(patch #29370) 数据挖掘研究院
(Bernhard Messer via Christoph) 数据挖掘实验室
3. 在 term vectors 中增加了 位置和偏移信息。(Grant Ingersoll & Christoph)
4. 增加了一个新的 DateTools 。允许用户格式化日期到一种更可读的格式,以便于更好的适应索引。DateTools 不像 DateFields 类,它允许日期指定到1970年以前,但必须使用指定的日期格式。这样,在RangeQuerys中使用就更加有效率了。 (Daniel Naber)
5. QueryParser 现在可以正确的和Analyzers 一起工作了,即可以在一个位置返回多个 Token 。 比如:查询: “+fast + car”如果 Analyzer 在同一位置返回 car 和 automobile ,那么上面的查询将被解析成:”+fast +(car automobile)”。 (Pierrick Brihaye, Daniel Naber)
6. 允许unbuffered的目录实现。(e.g.,using mmap)。
InputStream 被新类 IndexInput 替换, BufferedIndexInput 和 OutputStream 则被 IndexOutput 和 BufferedIndexOutput。 InputStream 和 OutputStream 已经被废弃了。FSDirectory 现在是一个子类了。(cutting)
7. 增加了原生 Directory 和 TermDocs 的实现,可以工作在 GCJ 下。GCJ的版本需要 3.4.0 以上。可以使用 ant gcj 来运行例子程序。(cutting)
8. 增加了 MmapDirectory 类,它使用 nio to mmap 输入文件。现在MmapDirectory 比FSDirectory 要慢些。但他对每个查询term 使用更少的内存。(cutting & Paul Elschot)
9. 增加 javadocs-internal 到 build.xml ? bug #30360 数据挖掘研究院
10. 增加了 RangeFileter ,比 DateFilter 更加通用,实用。
(Chris M Hostetter via Erik) 数据挖掘研究院
11. 增加了 NumberTools ,一个用来索引数字字段的工具类。 (adapted from code contributed by Matt Quail; committed by Erik)
12. 增加了 public static IndexReader.main(String[] args) 方法。
IndexReader 现在可以直接在命令行方式下使用,用来 列出或者从现存的索引中抽取单独的文件出来。
(adapted from code contributed by Garrett Rooney; committed by Bernhard) 数据挖掘研究院
13. 增加 IndexWriter.setTermIndexInterval() 方法。 (Doug Cutting)
14. 增加 LucenePackage ,这些静态的 get() 方法返回 java.util.Package。调用者可以用它来获得 Lucene jar 中的版本信息。
(Doug Cutting via Otis)

