论坛首页 Java企业应用论坛

Lucene2.1的新变化

浏览 5700 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-22  

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

   发表时间:2007-03-23  
借问一下,还有没有数据文件2G的限制?
或者有没有64位版本?
0 请登录后投票
   发表时间:2007-03-23  
好像还是一个过度作用?
0 请登录后投票
   发表时间:2007-03-23  
嗯,好东西,正在关注!
0 请登录后投票
   发表时间:2007-03-25  
提升了性能,有没有一些详细的性能对比数据呢?
0 请登录后投票
   发表时间:2007-03-25  
怎么没看到官方关于2.1的消息啊
0 请登录后投票
   发表时间:2007-04-10  
SeanHe 写道
怎么没看到官方关于2.1的消息啊


http://svn.apache.org/repos/asf/lucene/java/tags/lucene_2_1_0/CHANGES.txt

我也纳闷官方消息为什么没有出来,只能从上面那个链接看到相关内容,改动太多了,看了好久。貌似没有激动人心的东西,暂时蹲在2.0观望一下。

不过我对这个还是很有兴趣的:
10. LUCENE-701: Lockless commits: a commit lock is no longer required
    when a writer commits and a reader opens the index.  This includes
    a change to the index file format (see docs/fileformats.html for
    details).  It also removes all APIs associated with the commit
    lock & its timeout.  Readers are now truly read-only and do not
    block one another on startup.  This is the first step to getting
    Lucene to work correctly over NFS (second step is
    LUCENE-710). (Mike McCandless)
有空可以试试性能 
0 请登录后投票
   发表时间:2007-04-20  
我试了一下,挺能提升很大。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics