`

lucene中Field.Index, Field.Store,Field.TermVector详解

阅读更多
lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZED));
Field有两个属性可选:存储和索引。

通过存储属性你可以控制是否对这个Field进行存储;

通过索引属性你可以控制是否对该Field进行索引。

事实上对这两个属性的正确组合很重要。
Field.Index Field.Store 说明
TOKENIZED(分词) YES 被分词索引且存储
TOKENIZED NO 被分词索引但不存储
NO YES 这是不能被搜索的,它只是被搜索内容的附属物。如URL等
UN_TOKENIZED YES/NO 不被分词,它作为一个整体被搜索,搜一部分是搜不出来的
NO NO 没有这种用法


我们那文章表为例.articleinfo.有ID,title(标题),sumary(摘要),content(内容),userName(用户名)

其中title(标题),sumary(摘要)属于第一种情况,既要索引也要分词,也要存储.

content(内容)要分词,索引,但不存储.由于他太大了,而且界面也不用显示整个内容.

ID要存储,不用索引.因为没人用他来查询.但拼URL却很需要他.索引要存储.

userName(用户名)索引,但不分词.可用保存.为什么不分词?比如"成吉思汗",我不想被"成汉"搜索到.我希望要么"成吉思汗"或者"*吉思*"通配符搜到.

总结如下:

1.如果要对某Field进行查找,那么一定要把Field.Index设置为TOKENIZED或UN_TOKENIZED。TOKENIZED会对Field的内容进行分词;而UN_TOKENIZED不会,只有全词匹配,该Field才会被选中。
2.如果Field.Store是No,那么就无法在搜索结果中从索引数据直接提取该域的值,会使null。

补充:

       Field.Store.YES:存储字段值(未分词前的字段值)
       Field.Store.NO:不存储,存储与索引没有关系
       Field.Store.COMPRESS:压缩存储,用于长文本或二进制,但性能受损

       Field.Index.ANALYZED:分词建索引
       Field.Index.ANALYZED_NO_NORMS:分词建索引,但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间
       Field.Index.NOT_ANALYZED:不分词且索引
       Field.Index.NOT_ANALYZED_NO_NORMS:不分词建索引,Field的值去一个byte保存

       TermVector表示文档的条目(由一个Document和Field定位)和它们在当前文档中所出现的次数
       Field.TermVector.YES:为每个文档(Document)存储该字段的TermVector
       Field.TermVector.NO:不存储TermVector
       Field.TermVector.WITH_POSITIONS:存储位置
       Field.TermVector.WITH_OFFSETS:存储偏移量
       Field.TermVector.WITH_POSITIONS_OFFSETS:存储位置和偏移量
分享到:
评论

相关推荐

    lucene-highlighter.jar

    lucene-highlighter.jar lucene-highlighter.jar

    Apache Lucene全文检索和IKAnalyzer分词工具类

    Field FieldRemark = new Field("remark", vo.getRemark(), Field.Store.YES,Field.Index.TOKENIZED,Field.TermVector.WITH_POSITIONS_OFFSETS); doc.add(FieldId); doc.add(FieldTitle); doc.add...

    Lucene学习源码.rar

    2. `org.apache.lucene.document.Document` 和 `org.apache.lucene.document.Field`:构建索引的基本元素。 3. `org.apache.lucene.analysis.Analyzer`:查看分词器的实现,了解分词逻辑。 4. `org.apache.lucene....

    Lucene开发详解.pdf

    3. **org.apache.lucene.index**:该包提供了索引创建、更新和删除等功能,是构建索引的关键部分。 4. **org.apache.lucene.queryParser**:该包实现了查询解析器,用于处理用户输入的查询语句,将自然语言转换为...

    lucene-analysis.jar

    其中,"lucene-analysis.jar"是Lucene项目中的一个重要组件,主要负责文本的预处理工作,即文本分析。本文将深入探讨这个jar包及其包含的文件,以揭示其在Lucene中的关键作用。 首先,"lucene-analysis.jar"是...

    apache-lucene-analyzers.jar

    在Lucene中,分析器是将用户输入的文本转换为可搜索索引的关键组件。分析过程通常包括分词(tokenization)、词形还原(stemming)、去除停用词(stopword removal)等步骤。分析器的选择会直接影响到搜索的精度和...

    Lucene.Net.Analysis.Cn.dll

    在C#开发中,搜索引擎的构建是不可或缺的一部分,而Lucene.Net作为一个强大的全文搜索引擎库,为开发者提供了丰富的功能。本文将重点探讨Lucene.Net.Analysis.Cn.dll和Lucene.Net.dll这两个关键组件在C#环境下的作用...

    lucene对doc.xlsx操作包

    import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; //... 初始化Directory和IndexWriter try (InputStream is = new FileInputStream("path_to_your_file.docx")) { ...

    与lucene3.0兼容的庖丁jar包

    at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:137) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246) ...

    最新版linux lucene-8.10.0.tgz

    Linux Lucene 8.10.0是Apache Lucene项目的一个关键版本,它是一个高性能、全功能的文本搜索库,广泛应用于Java开发中。Lucene提供了丰富的搜索功能,包括全文检索、高级分析器、索引优化等,为开发者构建复杂的搜索...

    lucene_cn.jar

    例如,`org.apache.lucene.analysis.cn.*`包下的类,如ChineseAnalyzer,是专为中文文本设计的分析器,它采用了诸如IK、HanLian、SmartCN等知名的中文分词算法,可以根据实际需求选择合适的策略。此外,还有一些辅助...

    Lucene 基础指南.doc

    - Field.TermVector:在Lucene 1.4.3版本之后新增,用于支持模糊查询和相关性计算,但使用较少。 4. 其他概念 - Tokenization:文本分词,是搜索引擎处理文本的关键步骤,将文本分解成可索引的关键词。 - ...

    lucene-3.5.0.jar

    标题中的"lucene-3.5.0.jar"是Lucene的一个特定版本——3.5.0的Java档案文件(JAR),这个版本的发布标志着Lucene在全文搜索领域的又一里程碑。本文将深入探讨Lucene 3.5.0的核心特性和使用技巧。 首先,Lucene是一...

    lucene-3.0.2.zip

    lucene-3.0.2.zip lucene-3.0.2.zip

    最新版linux lucene-8.8.2.tgz

    最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz

    lucene-2.9.2.jar包+源码

    Lucene是一个开源的全文检索库,由Apache软件基金会开发,它提供了强大的文本搜索功能,被广泛应用于各种信息检索系统中。本文将围绕“lucene-2.9.2.jar”这个版本,结合源码,探讨其在中文分词和TF-IDF搜索引擎中的...

    Lucene深入讲解.txt,带你开发搜索引擎

    import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; public class TextFileIndexer { public static void main(String[] args) throws Exception { // 文件目录包含待索引的...

    Lucene中文分词组件 JE-Analysis 1.4.0

    Field.TermVector.WITH_POSITIONS_OFFSETS)); iwriter.addDocument(doc); iwriter.close(); IndexSearcher isearcher = new IndexSearcher(directory); QueryParser parser = new QueryParser(fieldName,...

Global site tag (gtag.js) - Google Analytics