Lucene 1.9 改进特性列表
1.9 RC1
注:lucene2.0发布版本并不是100%的和<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">1.4.3</chsdate>版兼容。也就是说在你用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的版本需要 <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">3.4.0</chsdate> 以上。可以使用 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)
15. 增加 Hits.iterator() 方法和相应的 HitIterator 和 Hit 对象。
他提供了对 Hits对象标准的 java.util.Iterator 叠代操作。
每个iterator's next() 方法返回一个 Hit 对象。
(Jeremy Rayner via Erik)
16. 增加 ParallelReader,这个一种IndexReader 他合并多个单独的索引到一个单独的虚拟索引上。(Doug Cutting)
17. 增加对 FieldCache 的 IntParser , FloatParser 接口, 这样任何格式的字段可以被以int 和float的形式缓存。
(Doug Cutting)
18. 新增类: org.apache.lucene.index.IndexModifier ,它合并了 IndexWriter 和 IndexReader,好处是我们可以增加和删除文档的时候不同担心 synchronisation/locking 的问题了。
(Daniel Naber)
19. Lucene 现在可以被用在一个没有签名的applet中了,Lucene’s 读取系统属性不会抛出 SecurityException 异常。
(Jon Schuster via Daniel Naber, bug #34359)
20. 增加了新类 MatchAllDocsQuery 用来匹配所有文档。
(John Wang via Daniel Naber, bug #34946)
21. 当索引太多的字段时,为了消减索引大小和内存消耗,提供了忽略规范化字段的功能。
见: Field.setOmitNorms()
(Yonik Seeley, LUCENE-448)
22. 增加对 contrib/highlighter 的 NullFragmenter , 这对全文本加亮很有用。
(Erik Hatcher)
23. 增加了正则表达式的查询: RegexQuery 和 SpanRegexQuery。
。
。
(Erik Hatcher)
24. 增加 ConstantScoreQuery 类,它包装了一个 filter produces a score
equal to the query boost for every matching document.
(Yonik Seeley, LUCENE-383)
25. 增加了 ConstantScoreRangeQuery 类,为某个区间的每个文档提供一个不变的 score。这个类比普通的 RangeQuery 类的好处是它并不展开到 BooleanQuery ,因此也不存在区间最大term上限。
(Yonik Seeley, LUCENE-383)
<!--D(["mb","</div>\r\n<div> </div>\r\n<div>26. Added ability to specify a minimum number of optional clauses \r\nthat<br> must match in a BooleanQuery. See \r\nBooleanQuery.setMinimumNumberSh<WBR>ouldMatch().<br> (Paul Elschot, \r\nChris Hostetter via Yonik Seeley, LUCENE-395)</div>\r\n<div> </div>\r\n<div>27. Added DisjunctionMaxQuery which provides the maximum score across it\'s \r\nclauses.<br> It\'s very useful for searching across multiple \r\nfields.<br> (Chuck Williams via Yonik Seeley, \r\nLUCENE-323)</div>\r\n<div> </div>\r\n<div>28. New class ISOLatin1AccentFilter that replaces accented characters in \r\nthe ISO<br> Latin 1 character set by their unaccented \r\nequivalent.<br> (Sven Duzont via Erik Hatcher)</div>\r\n<div> </div>\r\n<div>29. New class KeywordAnalyzer. "Tokenizes" the entire stream as a single \r\ntoken.<br> This is useful for data like zip codes, ids, and \r\nsome product names.<br> (Erik Hatcher)</div>\r\n<div> </div>\r\n<div>30. Copied LengthFilter from contrib area to core. Removes words that are \r\ntoo<br> long and too short from the \r\nstream.<br> (David Spencer via Otis and Daniel)</div>\r\n<div> </div>\r\n<div>31. Added getPositionIncrementGap(String fieldName) to Analyzer. This \r\nallows<br> custom analyzers to put gaps between Field \r\ninstances with the same field<br> name, preventing phrase or \r\nspan queries crossing these boundaries. The<br> default \r\nimplementation issues a gap of 0, allowing the default \r\ntoken<br> position increment of 1 to put the next field\'s \r\nfirst token into a<br> successive \r\nposition.<br> (Erik Hatcher, with advice from Yonik)</div>\r\n<div> </div>\r\n<div>32. StopFilter can now ignore case when checking for stop \r\nwords.<br> (Grant Ingersoll via Yonik, LUCENE-248)</div>\r\n<div> </div>\r\n<div>33. Add TopDocCollector and TopFieldDocCollector. These simplify \r\nthe<br> implementation of hit collectors that collect only \r\nthe<br> top-scoring or top-sorting hits.</div>\r\n<div> </div>\r\n<div>API Changes</div>\r\n<div> </div>\r\n<div> 1. Several methods and fields have been deprecated. The API \r\ndocumentation",1]);//-->
26. 为BooleanQuery增加了最小的匹配短语。见:BooleanQuery.setMinimumNumberShouldMatch().
(Paul Elschot, Chris Hostetter via Yonik Seeley, LUCENE-395)
27. 增加了 DisjunctionMaxQuery 类,提供了针对某个短语的最大score。
这一点对多字段的搜索非常有用。
(Luc Vanlerberghe via Yonik Seeley, LUCENE-323)
28. 新增类:ISOLatin1AccentFilter ,用 ISO Latin 1 字符集中的unaccented类字符替代 accented 类字符。
(Sven Duzont via Erik Hatcher)
29. 新增类:KeywordAnalyzer。"Tokenizes" 整个流作为一个单独的token。
这个类对于 邮政编码,序列号,和产品名称等比较有用。
(Erik Hatcher)
30. 把 LengthFilter 类从 contrib 放到了 core 代码里。从 stream 中去掉太长和太短的单词。
(David Spencer via Otis and Daniel)
31. 增加了 getPositionIncrementGap 方法到 Analyzer 中。这样用户自定义的 analyzer 可以在相同字段名的实例之间增加间隙 gaps,用来防止 phrase 和 span 查询超出边界。默认的 gap 是 0 。
(Erik Hatcher, with advice from Yonik)
32. StopFilter 增加了对处理stop words 的忽略大小写处理。
(Grant Ingersoll via Yonik, LUCENE-248)
33. 增加了 TopDocCollector 和 TopFieldDocCollector。用来简化实现hit 集合针对 top-scoring 和 top-sorting hits的处理。
API 的改变:
1. 几个方法和字段已经被废弃。在API 文档中包含了建议替换的内容。在这些建议中,这些不建议使用的方法和字段将会在Lucene2.0中被删除。(Daniel Naber)
2. Russian 和 German 的 analyzers 被移到了 contrib/analyzers 。
同样 WordlistLoader 类也被放到了 org.apache.lucene.analysis.WordlistLoader 下 (Daniel Naber)
3. API 包含抛出 IOException 异常的声明,但是实际上不会抛出。 These declarations have been removed. If
your code tries to catch these exceptions you might need to remove
those catch clauses to avoid compile errors.(Daniel Naber)
4. 为BooleanClause 类的enum 标准参数增加序列化的参数类。 (Christoph)
5. 为 SpanQuery 的子类嵌套其他SpanQuery 增加了 rewrite方法。
Lucene 的源代码管理器也从cvs 换到了svn:
http://svn.apache.org/repos/asf/lucene/java/trunk
参考资料:http://blog.csdn.net/accesine960/archive/2006/02/28/612622.aspx
原文地址:
http://svn.apache.org/viewcvs.cgi/*checkout*/lucene/java/branches/lucene_1_9/CHANGES.txt?rev=379190
分享到:
相关推荐
Lucene自1.9以来,已经经历了多次迭代,每个版本都带来了性能和功能上的提升,但1.9版本仍具有其历史价值,尤其对于那些需要了解早期版本特性的开发者来说。 Lucene的核心功能包括文档的索引和搜索,支持多种类型的...
《深入理解Lucene.NET 1.9:DLL文件解析与应用》 在信息技术领域,搜索引擎技术扮演着至关重要的角色,而Lucene.NET是.NET平台上的一款强大的全文搜索引擎库。本文将详细探讨Lucene.NET 1.9版本的DLL文件,包括其...
《Lucene 2.3.1.jar:洞察搜索引擎的核心技术》 在信息技术的海洋中,搜索引擎扮演着至关重要的角色,而Lucene则是其中的一颗璀璨明珠。作为一个开源全文检索库,Lucene为开发者提供了强大的文本搜索功能。在这里,...
.net 1.9 lucene.net 这个好用,但需要版本更高的呢
Apache Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析...
经过对搜索引擎的研究同时与Lucene自身的特性相结合,搜索引擎的设计与实现需要实现的功能阐述如下: (1)支持桌面文件搜索,格式包括txt、doc、xls和ppt; (2)支持分词查询 (3)支持全文搜索 (4)能够高亮...
《Mdrill项目在Lucene改进的深度解析》 在大数据检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用。然而,随着数据量的爆炸性增长,原生Lucene在处理大规模数据时暴露出一些问题,如内存占用过高、创建...
Lucene的主要特性包括: 1. **分词与索引**:Lucene使用高效的分词器将文档内容分解成独立的词汇项(tokens),然后建立倒排索引。倒排索引是一种数据结构,它将每个词汇项映射到包含该词汇项的文档列表,极大地...
本文将深入探讨Lucene 4.7.2的特性,包括创建、删除和修改索引,以及高级搜索功能如通用对象搜索、范围搜索、排序和高亮显示。 首先,让我们了解如何利用Lucene 4.7.2创建索引。创建索引是全文检索的基础,它涉及将...
Lucene 4.0.0 版本是该项目的其中一个稳定版本,发布于2012年,为开发者带来了多项改进和新特性。 **1. Lucene的核心功能** - **索引构建**: Lucene 提供了丰富的API用于将文档内容转化为可搜索的索引。索引过程...
### 针对中文检索的Lucene改进策略 #### 概述 随着互联网技术的快速发展,中文信息检索的需求日益增长。然而,传统的基于英文设计的信息检索系统并不完全适用于中文环境。Lucene作为一款广泛使用的开源全文检索...
在本文中,我们将深入探讨Weblucene的主要特性、工作原理以及如何在你的网站上部署和使用Weblucene。 **1. Weblucene 主要特性** - **全文检索**:Weblucene支持对网页文本的全文搜索,允许用户通过关键词查找相关...
Lucene 3.5.0是Lucene的一个重要版本,它在3.x系列中引入了许多关键改进和新特性。在这个版本中,开发者可以找到关于索引构建、查询解析、搜索优化等多个方面的源代码实现。以下是对这个版本中一些关键知识点的详细...
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
Java搜索引擎Lucene是一款开源的全文检索库,由Apache软件基金会开发并维护,它为Java开发者提供了强大的文本搜索功能。...记得在使用时,确保与你的Java运行环境兼容,并考虑升级到最新版本以获得最新的特性和改进。
二、Lucene 3.6.0的特性与改进 1. 性能优化:3.6.0版本在性能上进行了大量优化,包括更快的索引构建速度和更高效的搜索性能。 2. 新增查询语法:增加了对布尔运算符的改进,支持更复杂的查询表达式,如近似搜索、...
倒排索引是Lucene的核心,它将每个词对应到包含该词的文档列表,便于快速查找。 3. **查询处理** Lucene支持高级查询语法,可以构造复杂的布尔表达式,如AND、OR、NOT等逻辑操作。同时,它还提供了评分机制,用于...
本文将深入探讨 Lucene 2.0 和 3.0 版本的主要特性和变化。 **Lucene 2.0 API 知识点** 1. **索引构建**: Lucene 2.0 提供了 `IndexWriter` 类,用于创建和更新索引。开发者可以使用 `Document` 类来封装待索引的...
本文示例基于Lucene.NET1.9版本,可通过访问Lucene.Net官网获取最新版本。 #### 三、基本应用 ##### 1. 创建索引 创建索引是全文搜索的基础,涉及目录管理、分析器设置、文档构建与写入等步骤。 - **目录管理**...