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 |
没有这种用法 |
在新版本3,0中,已经没有TOKENIZED了 ,取代的是Field.Index.ANALYZED;
具体参考下面的介绍:
我们那文章表为例.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:存储位置和偏移量
原链:http://blog.csdn.net/llwan/article/details/6096004
分享到:
相关推荐
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
本指南主要关注的是Lucene 3.0版本的API,这是一个强大的工具集,用于在Java环境中构建全文搜索引擎。 一、Lucene核心概念 1. 文档(Document):在Lucene中,文档是信息的基本单位,它由一系列字段(Field)组成...
以下是对Lucene3.0分词系统中涉及的关键知识点的深入解析。 ### 英文分词原理 英文分词相较于中文来说较为简单,因为英文单词间通常以空格作为天然的分隔符。然而,为了提高搜索效率和准确性,Lucene3.0采用了更...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
<lucene-version>5.3.1</lucene-version> </properties> <dependencies> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>${lucene-version}</version> ...
List<Article> results = new ArrayList<>(); for (ScoreDoc scoreDoc : topDocs.scoreDocs) { Document doc = searcher.doc(scoreDoc.doc); Long articleId = Long.parseLong(doc.get("id")); // 假设我们有...
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:137) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246) ...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.10.4</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</...
lucene 3.0 API中文帮助,学习的人懂得的
Maven < dependency> < groupId>com.hankcs.nlp</ groupId> < artifactId>hanlp-lucene-plugin</ artifactId> < version>1.1.7</ version> </ dependency>Solr快速上手将和共两个jar放入${webapp}/WEB-INF/li
【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>2.4.1</version> </dependency> </dependencies> ``` 在Java代码中,你可以如下所示创建和使用MMAnalyzer: ```java ...
doc.add(new Field("title", "Lucene 3.0使用介绍", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("content", "这是一个关于Lucene 3.0的实例教程。", Field.Store.YES, Field.Index.ANALYZED)); ...
import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.Directory; import org....
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>8.10.1</version> <!-- 请根据实际版本号更新 --> </dependency> <dependency> <groupId>org.apache.lucene</groupId> ...
<artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>${spring-boot.version}</version> </dependency> 2、配置文件 spring: application: name: ware-elastic-search data: elastic...
在Lucene3.0中创建索引是一个关键功能,可以帮助用户快速地检索和管理大量的文本数据。本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、Lucene3.0简介 Lucene是一...
doc.add(new Field("content", "这是Lucene 3.0的实例", Field.Store.YES, Field.Index.ANALYZED)); ``` 3. **查询(Querying)**: 使用 QueryParser 创建查询对象,然后用 IndexSearcher 执行查询: ```java ...
<br><br><br>兼容性<br> Mozilla Firefox v1.5.0.0 以上版本<br> Microsoft Internet Explorer v6.0 以上版本<br><br>开发者<br> 水月·静夜思<br> website: http://www.x3blog.cn<br> sourceforge项目地址: ...