lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3
来源:互联网 发布:淘宝数据魔方破解版 编辑:程序博客网 时间:2024/04/27 16:00
前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段、创建索引文档,给字段加权以及保存文档到索引器目录
luncene5.5.3集合jar包下载地址:http://download.csdn.net/detail/eguid_1/9677589
一、创建索引文档
一个索引目录可以放多个索引文档,每个索引文档由多个索引字段组成,索引字段由要索引的字段名和字段内容以及权重值组成
1、构建索引字段并加权
/** * 创建索引字段 * @param boost * -权重值 * @param fieldName * - 字段名 * @param statement * -内容 * @param fieldType * -字段存储类型 * @return */public Field createField(String fieldName, String statement, FieldType fieldType, Float boost) {Field field = null;if (fieldName != null && statement != null && fieldType != null) {field = new Field(fieldName, statement, fieldType);if (boost != null) {field.setBoost(boost);}}return field;}/** * 创建索引字段 * * @param fieldName * @param reader * @param type * @param boost * @return */public Field createField(String fieldName, Reader reader, FieldType type, Float boost) {Field field = null;if (fieldName != null && reader != null) {field = new Field(fieldName, reader, type);if (boost != null) {field.setBoost(boost);}}return field;}/** * 创建索引字段 * * @param fieldName * @param tokenStream * @param type * @param boost * @return */public Field createField(String fieldName, TokenStream tokenStream, FieldType type, Float boost) {Field field = null;if (fieldName != null && tokenStream != null) {field = new Field(fieldName, tokenStream, type);if (boost != null) {field.setBoost(boost);}}return field;}/** * 创建索引字段 * * @param fieldName * @param value * @param type * @param boost * @return */public Field createField(String fieldName, byte[] value, FieldType type, Float boost) {return value != null ? createField(fieldName, value, 0, value.length, type, boost) : null;}/** * 创建索引字段 * * @param fieldName * @param value * @param offset * @param length * @param type * @param boost * @return */public Field createField(String fieldName, byte[] value, int offset, int length, FieldType type, Float boost) {Field field = null;if (fieldName != null && value != null && type != null) {field = new Field(fieldName, value, offset, length, type);if (boost != null) {field.setBoost(boost);}}return field;}
2、创建索引文档
/** * 创建索引文档 * * @return */public Document createDocument() {return new Document();}
二、添加字段到索引文档
/** * 把字段存放到索引文档 * * @param document * @param field * @return */public Document addFiled(Document document, Field field) {if (field != null) {document.add(field);}return document;}/** * 批量存放字段到索引文档 * @param document * @param fields * @return */public Document addFiledList(Document document, Field... fields) {if (fields != null && fields.length > 0) {for (Field field : fields) {document.add(field);}}return document;}
三、给索引器添加索引文档
使用上一章中的方法把生成的文档添加到索引中
事实上我们常把索引文档根据不同分类保存到不同的索引目录,再搜索时可以根据不同索引目录进行搜索。
例如:
Analyzer analyzer=createAnalyzer(false);Directory dir=createDirectory(null, "d:","dir","search");IndexWriterConfig conf=createIndexConf(analyzer, OpenMode.CREATE_OR_APPEND, false);IndexWriter index=createIndex(dir, conf);//创建一个文档Document doc=createDocument(); String[] states = new String[] {"欢迎来到eguid的博客", "欢迎大家来到eguid的技术博客", "欢迎大家来到eguid的技术博客,很开心能和大家一起分享开源技术"};//创建字段Field[] fields=createFields("字段名", states, TextField.TYPE_STORED, 1.1f);//批量增加字段到索引文档addFiledList(doc, fields);//把索引文档保存到索引器index.addDocument(doc);这样就把添加了一个索引,想要搜索这个索引,那么接下来让我们创建搜索器吧
下一章:lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.2
1 0
- lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3
- lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3
- lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.3
- Lucene三(索引加权)
- MySQL全文搜索索引字段的作用
- 全文检索Lucene入门之创建索引及简单搜索
- lucene--创建索引,搜索
- Lucene-索引创建&搜索
- Lucene5.0索引的创建与搜索
- mysql全文搜索索引的字段提高搜索效率
- mysql全文搜索索引的字段提高搜索效率
- lucene5.5创建索引
- lucene5--创建索引
- lucene5--多线程创建索引
- java之全文索引搜索lucene之增删改查文档与中文分词搜索
- Lucene(Lucence)建立索引(字段)
- Lucene 入门之创建索引和搜索
- java之全文索引搜索lucene之增删改查文档
- Codeforces 233C Cycles(图的三元环)
- 装配Bean(一)
- 二叉树的层序遍历(递归)
- Qt5 UDP广播
- 2016年11月8日学习总结
- lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3
- netty之AbstractBootstrap及其子类源码分析
- iOS - NSINputStream输入流的两种解决方案(适用大文件上传读取)
- Android Studio 快捷键之切换大小写
- 容器数据存储-Portworx试用
- XML解析(访问数据接口)
- 一元多项式运算器
- [mapReduce]:Eclipse hadoop远程环境搭建
- JAVA 中bufferStream的理解和使用