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
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...
2. `org.apache.lucene.document.Document` 和 `org.apache.lucene.document.Field`:构建索引的基本元素。 3. `org.apache.lucene.analysis.Analyzer`:查看分词器的实现,了解分词逻辑。 4. `org.apache.lucene....
其中,"lucene-analysis.jar"是Lucene项目中的一个重要组件,主要负责文本的预处理工作,即文本分析。本文将深入探讨这个jar包及其包含的文件,以揭示其在Lucene中的关键作用。 首先,"lucene-analysis.jar"是...
在Lucene中,分析器是将用户输入的文本转换为可搜索索引的关键组件。分析过程通常包括分词(tokenization)、词形还原(stemming)、去除停用词(stopword removal)等步骤。分析器的选择会直接影响到搜索的精度和...
在C#开发中,搜索引擎的构建是不可或缺的一部分,而Lucene.Net作为一个强大的全文搜索引擎库,为开发者提供了丰富的功能。本文将重点探讨Lucene.Net.Analysis.Cn.dll和Lucene.Net.dll这两个关键组件在C#环境下的作用...
import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; //... 初始化Directory和IndexWriter try (InputStream is = new FileInputStream("path_to_your_file.docx")) { ...
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是Apache Lucene项目的一个关键版本,它是一个高性能、全功能的文本搜索库,广泛应用于Java开发中。Lucene提供了丰富的搜索功能,包括全文检索、高级分析器、索引优化等,为开发者构建复杂的搜索...
例如,`org.apache.lucene.analysis.cn.*`包下的类,如ChineseAnalyzer,是专为中文文本设计的分析器,它采用了诸如IK、HanLian、SmartCN等知名的中文分词算法,可以根据实际需求选择合适的策略。此外,还有一些辅助...
- Field.TermVector:在Lucene 1.4.3版本之后新增,用于支持模糊查询和相关性计算,但使用较少。 4. 其他概念 - Tokenization:文本分词,是搜索引擎处理文本的关键步骤,将文本分解成可索引的关键词。 - ...
标题中的"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
最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz
doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("content", "lucene works well", Field.Store.NO, Field.Index.TOKENIZED)); writer....
Lucene是一个开源的全文检索库,由Apache软件基金会开发,它提供了强大的文本搜索功能,被广泛应用于各种信息检索系统中。本文将围绕“lucene-2.9.2.jar”这个版本,结合源码,探讨其在中文分词和TF-IDF搜索引擎中的...
import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; public class TextFileIndexer { public static void main(String[] args) throws Exception { // 文件目录包含待索引的...
Field.TermVector.WITH_POSITIONS_OFFSETS)); iwriter.addDocument(doc); iwriter.close(); IndexSearcher isearcher = new IndexSearcher(directory); QueryParser parser = new QueryParser(fieldName,...