9) 第二章 索引:Field的设置

 

    Field也许算是Lucene索引阶段最重要的类,它是存储被索引值的类。当创建Field时,Lucene为其提供了诸多选项供你选择。

 

1. 索引

    索引选项(Field.Index.*)用来控制域中的文本如何通过反向索引搜索。共有如下选项:

    1) Index.ANALYZED

          最常用的设置,采用分词策略,将原文拆分成词元(通常用在正文、标题、摘要等域)

    2) Index.NOT_ANALYZED

          不采用分词策略,即把原文当作一整个词元对待(通常用在URL、文件路径、日期等域)

    3) Index.ANALYZED_NO_NORMS

          它是Index.ANALYZED的高级变种,在索引文件中不存储规则信息,比如一些优先策略

    4) Index.NOT_ANALYZED_NO_NORMS

          类似上面,它是Index.NOT_ANALYZED的高级变种

    5) Index.NO

          指定为此选项的域将不能被搜索到

 

2. 存储

    存储选项(Field.Store.*)用来决定是否将域值存储起来。共有如下选项:

    1) Store.YES

    2) Store.NO

    标识为YES的域值将会被存储在index中,搜索阶段可以用IndexReader检索到它。此选项对于需要在查询结果中显示的域非常有用(如URL、标题等)。

    Lucene中包含一个非常有用的工具类,CompressionTools,它提供了压缩和解压byte数组的方法。其内部调用了java的内置java.util.Zip包中的方法。在存储之前你可以利用它先将内容压缩,但是压缩会降低索引和搜索的效率,对于很小的域值,通常并不值得去压缩。

 

3. 检索词向量

    这个稍微麻烦一些,不展开了。选项如下:

    1) TermVector.YES

    2) TermVector.WITH_POSITIONS

    3) TermVector.WITH_OFFSETS

    4) TermVector.WITH_POSITIONS_OFFSETS

    5) TermVector.NO

    需要注意的是,如果设置了Index.NO, 则必须是TermVector.NO. 即前四个选项必须建立在域值可索引的基础上。

 

4. Field的构造器

    Field的构造器有很多:

    

 

5. 小结

    组合以上选项,主要有如下用法:

Index         Store TermVector 常见用处
NOT_ANALYZED YESNO文件名、URL、电话、日期等
ANALYZEDYESWITH_POSITIONS_OFFSETS标题、摘要
ANALYZEDNOWITH_POSITIONS_OFFSETS正文
NOYESNO分类、数据库主键等只用来在结果中显示的
NOT_ANALYZEDNONO隐藏的关键字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值