Lucene学习笔记之域选项

来源:互联网 发布:手机淘宝发货流程 编辑:程序博客网 时间:2024/06/13 11:31

Field类控制着被索引的域值,当创建好一个域时,可以指定多个域选项来控制Lucene在将文档添加进索引后针对该域的行为。

1、域索引选项(Field.Index.*)通过倒排索引来控制文本是否可被搜索。

    Index.ANALYZED:使用分析器将域值分解成独立的语汇单元流,并使每个语汇单元能被搜索。该选项适用于普通文本域(eg.正文、标题、摘要等)

    Index.NOT_ANALYZED:对域进行索引,但不对String值进行分析。将域值作为单一语汇单元并使之能被搜索。适用于索引那些不能被分解的域值,eg.URL、文件路径、日期、人名、社保号码、电话号码等。尤适用“精确匹配”

    Index.ANALYZED_NO_NORMS: Index.ANALYZED变体,不会在索引中存储norms信息。norms记录了索引中的index-time boost信息,当搜索时可能比较耗内存。

    Index.NOT_ANALYZED_NO_NORMS:与Index.NOT_ANALYZED类似,但也不存储norms信息。常用在搜索期间节省索引空间和减少内存耗费,因为single-token域并不需要norms信息,除非它们已被进行加权操作

    Index.NO:使对应域值不被检索

2、域存储选项(Field.Store.*)用来确定是否需要存储域的真实值,以便后续搜索时能恢复这个值

    Store.YES:指定存储域值。该情况下,原始的字符串全部保存在索引中,并可以由IndexReader类恢复。该选项对需要展示搜索结果的一些域有用(eg.URL、标题或数据库主键)。但存储这些域值会消耗掉索引的存储空间。

    Stroe.NO:不指定存储域值。通常跟Index.ANALYZED 选项共同用来索引大的文本域值,通常这些域值不用恢复为初始格式,eg.Web页面正文或其他类型的文本文档。


参考《Lucene实战(第2版)》

0 0
原创粉丝点击