`
bevis.cn
  • 浏览: 154605 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

(说法一)最近用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 <?xml:namespace prefix = st1 /><chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span style="FONT-SIZE: 10pt">2.0.0</span> </chsdate>版本和 1.4.3 版本方法相比改动比较大,具体见下表

<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span style="FONT-SIZE: 10pt">1.4.3</span> </chsdate>版本中的下面方法都被 Field(String name, String value, Store store, Index index, TermVector termVector) 取代

Keyword(String name, String value) // only version <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.3</chsdate>
存储、索引、不分词,用于 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 <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.3</chsdate>
存储、不索引、不分词,比如文件的全路径
Field(String name, String value,Field.Store.YES, Field.Index.NO)// version 2.0.0

UnStored(String name, String value) // only version <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.3</chsdate>
不存储、索引、分词,比如 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 <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.3</chsdate>
存储、索引、分词,比如文件的各种属性,比如 MP3 文件的歌手、专辑等等。 Field.Store.YES, Field(String name, String value,Field.Index.TOKENIZED)// version 2.0.0

Text(String name, Reader value) // only version <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.3</chsdate>

Field(String name, Reader reader) // version <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False">2.0.0</chsdate>
不存储、索引、分词。

(说法五)

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.html

分享到:
评论

相关推荐

    基于net的超市管理系统源代码(完整前后端+sqlserver+说明文档+LW).zip

    功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。

    LABVIEW程序实例-公式节点.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    大米商城开源版damishop(适合外贸)

    大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插

    LABVIEW程序实例-通过全局变量接收数据.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    LABVIEW程序实例-日历控件.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频.zip

    毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频

Global site tag (gtag.js) - Google Analytics