`
bigelf
  • 浏览: 7835 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Lucene field类 1.x版本和2.x版本比较

阅读更多
(说法一)最近用Lucene开发全文检索。《Lucene in Action》这本书用的是Lucene 1.4。我自己下的是最新的2.1。然后就发现了很多不同的地方。

Field没了Keyword、UnIndexed、UnStored、Text这几个静态成员,只能用
Field(String, String, Store, Index)。
Keyword对应Field.Store.YES, Field.Index.UN_TOKENIZED,
UnIndexed 对应Field.Store.YES, Field.Index.NO,
UnStored对应Field.Store.NO, Field.Index.TOKENIZED,
Text对应Field.Store.YES, Field.Index.TOKENIZED。

FSDirectory.getDirectory的有两个参数的变成了depresed 了。现在要用只有一个参数的。

BooleanQuery的add方法也变了。原来是用两个boolean值组合的,现在 使用BooleanClause.Occur的几个静态成员了。

暂时就发现这点差异。[引自:http://syre.blogbus.com/logs/4736803.html]

(说法二)Field类一共有5种构造函数:

Field(String name, byte[] value, Field.Store store)
           Create a stored field with binary value.
Field(String name, Reader reader)
           Create a tokenized and indexed field that is not stored.
Field(String name, Reader reader, Field.TermVector termVector)
           Create a tokenized and indexed field that is not stored, optionally with storing term vectors.
Field(String name, String value, Field.Store store, Field.Index index)
           Create a field by specifying its name, value and how it will be saved in the index.
Field(String name, String value, Field.Store store, Field.Index index, Field.TermVector termVector)
           Create a field by specifying its name, value and how it will be saved in the index.

其中:

Field.Store 表示“是否存储”,即该Field内的信息是否要被原封不动的保存在索引中。

Field.Index 表示“是否索引”,即在这个Field中的数据是否在将来检索时需要被用户检索到,一个“不索引”的Field通常仅是提供辅助信息储存的功能。

Field.TermVector 表示“是否切词”,即在这个Field中的数据是否需要被切词。

通常,参数用Reader,表示在文本流数据源中获取数据,数据量一般会比较大。像链接地址URL、文件系统路径信息、时间日期、人名、居民身份证、电话号码等等通常将被索引并且完整的存储在索引中,但一般不需要切分词,通常用上面的第四个构造函数,第三四个参数分别为Field.Store.YES, Field.Index.YES。而长文本通常可用第3个构造函数。引用[http://blog.csdn.net/colasnail/archive/2007/03/21/1536417.aspx]

(说法三)

1.       2.0以前的版本

UnIndexed: Field的值将被保存到索引文件,不为Field的值建立索引,因此不能通过该Field搜索文档。 UnStored: Field的值不被保存到索引文件,将Field的值分词后建立索引

Text: Field的值分词后建立索引。如果参数为String值将被保存,为Reader值不被保存
2.       2.0版本
    用几个内部类的组合来区分Field的具体类型。
Store
        COMPRESS:压缩保存。用于长文本或二进制数据
        YES:保存
        NO:不保存
Index
        NO:不建索引
        TOKENIZED:分词,建索引
        UN_TOKENIZED:不分词,建索引
        NO_NORMS:不分词,建索引。但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间
TermVector
        NO:不保存term vectors
        YES:保存term vectors。
        WITH_POSITIONS:保存term vectors。(保存值和token位置信息)
        WITH_OFFSETS:保存term vectors。(保存值和Token的offset)WITH_POSITIONS_OFFSETS:保存term vectors。(保存值和token位置信息和Token的offset)

(说法四)

关于 Field , 2.0.0 版本和 1.4.3 版本方法相比改动比较大,具体见下表

1.4.3 版本中的下面方法都被 Field(String name, String value, Store store, Index index, TermVector termVector) 取代

Keyword(String name, String value) // only version 1.4.3
存储、索引、不分词,用于 URI (比如 MSN 聊天记录的日期域、比如 MP3 文件的文件全路径等等)
Field(String name, String value, Field.Store.YES, Field.Index.UN_TOKENIZED) // version 2.0.0

UnIndexed(String name, String value) // only version 1.4.3
存储、不索引、不分词,比如文件的全路径
Field(String name, String value,Field.Store.YES, Field.Index.NO)// version 2.0.0

UnStored(String name, String value) // only version 1.4.3
不存储、索引、分词,比如 HTML 的正文、 Word 的内容等等,这部分内容是要被索引的,但是由于具体内容通常很大,没有必要再进行存储,可以到时候根据 URI 再来挖取。所以,这部分只分词、索引,而不存储。
Field(String name, String value,Field.Store.YES, Field.Index.TOKENIZED)// version 2.0.0

Text(String name, String value) // only version 1.4.3
存储、索引、分词,比如文件的各种属性,比如 MP3 文件的歌手、专辑等等。 Field.Store.YES, Field(String name, String value,Field.Index.TOKENIZED)// version 2.0.0

Text(String name, Reader value) // only version 1.4.3

Field(String name, Reader reader) // version 2.0.0
不存储、索引、分词。

(说法五)

1.       2.0 以前的版本
Keyword: Field 的值将被保存到索引文件,为Field的值建立索引,建立索引时不需要分词。
UnIndexed: Field 的值将被保存到索引文件,不为Field的值建立索引,因此不能通过该Field搜索文档。
UnStored: Field 的值不被保存到索引文件,将Field的值分词后建立索引
Text: Field 的值分词后建立索引。如果参数为String值将被保存,为Reader值不被保存
2.       2.0 版本

用几个内部类的组合来区分Field的具体类型。

Store
²        COMPRESS: 压缩保存。用于长文本或二进制数据

²        YES :保存

²        NO :不保存

Index
²        NO :不 建索引

²        TOKENIZED :分词, 建索引

²        UN_TOKENIZED :不分词, 建索引

²        NO_NORMS :不分词, 建索引。但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间

TermVector
²        NO : 不保存term vectors

²        YES : 保存term vectors。

²        WITH_POSITIONS : 保存term vectors。(保存值和token位置信息)

²        WITH_OFFSETS : 保存term vectors。(保存值和Token的offset)WITH_POSITIONS_OFFSETS:保存term vectors。(保存值和token位置信息和Token的offset)

(说法六)

* Field.Index有四个属性,分别是:
Field.Index.TOKENIZED:分词索引
Field.Index.UN_TOKENIZED:分词进行索引,如作者名,日期等,Rod Johnson本身为一单词,不再需要分词。
Field.Index:不进行索引,存放不能被搜索的内容如文档的一些附加属性如文档类型, URL等。
Field.Index.NO_NORMS:;
Field.Store也有三个属性,分别是:
Field.Store.YES:索引文件本来只存储索引数据, 此设计将原文内容直接也存储在索引文件中,如文档的标题。
Field.Store.NO:原文不存储在索引文件中,搜索结果命中后,再根据其他附加属性如文件的Path,数据库的主键等,重新连接打开原文,适合原文内容较大的情况。
Field.Store.COMPRESS 压缩存储;
termVector是Lucene 1.4.3新增的它提供一种向量机制来进行模糊查询,很少用。

tags:lucene lucene.net dotlucene field类 Field.store Field.UnStored Field.Keyword Field.Text Field.Index Field.TermVector
转自:http://hi.baidu.com/gw_noah/blog/item/0646fbc4c3418daa8226ac0c.htm
分享到:
评论

相关推荐

    第一个Lucene 3.6 (3.X) 入门实例

    在3.6版本中,Lucene引入了诸多改进和优化,提高了搜索效率和用户体验。 入门实例通常从安装和构建环境开始。首先,你需要下载Lucene 3.6的源码包,通过Maven或Ivy等依赖管理工具进行构建。这一步将确保你获取到...

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    《深入理解Lucene 3.0.2:核心与演示》 在信息技术领域,搜索引擎的构建是至关...然而,随着技术的不断发展,后续的版本(如6.x、8.x)带来了更多的改进和新特性,开发者在选择时也应考虑到版本的更新和兼容性问题。

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-18.Lucene排序 共6页.pptx

    《Lucene4.X实战:构建类百度搜索的大型文档海量搜索系统——排序篇》 在搜索引擎的世界里,正确的排序机制是提升用户体验的关键因素之一。Apache Lucene,作为一款强大的全文检索库,提供了丰富的功能,包括对搜索...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-19.Lucene过滤 共4页.pptx

    本课程专注于Lucene 4.x版本,旨在通过一系列实战案例帮助开发者掌握如何利用Lucene实现类似百度的搜索功能。在第十九讲“Lucene过滤”中,我们将探讨Lucene内置的过滤器机制,这是优化搜索结果和提升用户体验的关键...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-16.Lucene高级进阶2 共4页.pptx

    在本课程中,我们主要探讨了Lucene 4.x版本的高级进阶应用,特别是针对大规模文档搜索引擎的构建。Lucene作为一个开源全文搜索引擎库,它提供了高效、灵活的索引和搜索功能,是构建高性能搜索系统的基石。在这个部分...

    《ajax+Lucene构建搜索引擎》源代码 for lucene 2.x

    《Ajax+Lucene构建搜索引擎》源代码是针对Lucene 2.x版本的一个示例项目,旨在教用户如何结合Ajax技术和Lucene搜索引擎库来创建高效的、交互式的搜索功能。Lucene是一个开源全文检索库,由Apache软件基金会开发,它...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-17.Lucene高级进阶3 共4页.pptx

    《Lucene4.X实战:构建类百度搜索的大型文档海量搜索系统》 Lucene是一个强大的全文搜索引擎库,广泛应用于各种信息检索系统。本教程通过17讲内容,深入讲解了如何利用Lucene4.X实现一个类似百度的大型文档搜索系统...

    IKAnalyzer5.2.1增加连续数字、字母、英语智能分词支持solr5.x以上、lucence5.x以上版本

    IKAnalyzer5.2.1根据IKAnalyzer2012FF_u1_custom基础上修改,支持lucence5.x以上版本。增加连续数字、字母、英语及其组合智能分词(可关闭isIndistinct)支持lucence5.x以上版本。配置文件:<fieldType name="text_...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-04.Lucene索引深入 共24页.pptx

    每个文档的Field Data的地址和实际数据分别存储在.fdx和.fdt文件中,这允许快速访问存储的字段。 5. **Term Dictionary**:.tim文件是Term Dictionary,存储了所有唯一的词元(Term)及其对应的文档频率、位置等...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-06.Lucene索引搜索 共13页.pptx

    1. **索引搜索类**: - **IndexSearcher**:它是执行搜索的主要类,负责在已经构建好的索引上进行查询。它可以以只读方式打开索引,并允许多个实例并行操作。IndexSearcher提供了多种搜索方法,如`search()`,用于...

    IKAnalyzer5.2.1src增加连续数字、字母、英语智能分词支持solr5.x以上、lucence5.x以上版本

    IKAnalyzer5.2.1根据IKAnalyzer2012FF_u1_custom基础上修改,支持lucence5.x以上版本。增加连续数字、字母、英语及其组合智能分词(可关闭isIndistinct)支持lucence5.x以上版本。配置文件:<fieldType name="text_...

    ik-analyzer-solr7.x.zip

    本篇文章将围绕“ik-analyzer-solr7.x.zip”这个压缩包,详细讲解IK Analyzer在Solr 7.x版本中的应用与配置。 首先,让我们了解一下Solr。Solr是Apache Lucene项目的一个子项目,是一款强大的全文搜索服务器。它...

    lucene-6.5.1

    Lucene 6.5.1作为该系列的一个版本,继承了Lucene 6.x系列的诸多优点,并在此基础上进行了优化与增强,以提高搜索性能和稳定性。 ### 特性与改进 #### 1. 性能提升 - **索引速度**: Lucene 6.5.1通过改进内部算法...

    Elasticsearch1.x Java教程

    - **0.90.x 升级至1.x后问题**:列举了从旧版本迁移时常见的问题及解决方案。 - **一、系统级别及设置方面**:提供了关于Elasticsearch 配置的最佳实践。 - **二、统计信息相关命令的变化**:概述了1.x版本中统计...

    solr 5.x 和 6.x 最新中文分词器

    在Solr 5.x和6.x版本中,中文分词器扮演着至关重要的角色,它负责将中文文本拆分成有意义的词汇,便于索引和查询。下面将详细介绍Solr中的中文分词器及其相关知识。 一、Solr中文分词器概述 在处理中文文档时,由于...

    solr6.x_IK中文分词工具

    1. 下载IK分词器的对应版本,确保与Solr6.x兼容。 2. 将下载的`solr6.x_IK中文分词工具`解压,将`lib`目录下的jar文件复制到Solr的`server/solr-webapp/webapp/WEB-INF/lib`目录下。 3. 修改Solr的配置文件`...

    solr5.5.x的中文分词IKAnalyzer

    标题 "solr5.5.x的中文分词IKAnalyzer" 指的是在Apache Solr 5.5.x版本中使用IKAnalyzer进行中文文本的分词处理。Solr是一款流行的开源搜索服务器,它允许对大量数据进行高效、复杂的全文检索。而中文分词是中文文本...

    lucene的jar包,欢迎下载

    9. **社区与版本**:Lucene历经多个版本的迭代,目前最新的稳定版已经发展到8.x,拥有强大的社区支持,不断有新的特性和优化加入。 10. **应用场景**:Lucene广泛应用于各种需要全文搜索的场景,如网站搜索、日志...

    solr 中文分词其IKAnalyzer 支持solr版本5.X-7.X

    描述中提到的"solr中文分词器 IKAnalyzer 支持solr版本5.x到7.x 亲测可用,我用的是7.2版本"进一步证实了IKAnalyzer在Solr 7.2版本中的实际应用,这为其他用户提供了信心,确保了在不同Solr版本下的稳定运行。...

Global site tag (gtag.js) - Google Analytics