本文的lucene是基于lucene3.5版本.

使用lucene实现搜索引擎开发,核心的部分是建立索引和搜索。本节主要是记录创建索引部分的内容。

创建的索引结构如图所示。

创建索引的步骤分为以下几个步骤:

1、建立索引器IndexWriter

2、创建文档对象Document

3、建立信息对象字段Field

4、将Field对象添加到Document

5、将Document对象添加到IndexWriter对象中

下面简要介绍几个核心对象。

(1)、创建IndexWriter对象。

IndexWriter writer=new IndexWriter(directory, iwc)。

directory是创建的索引要保存的路径,如果要保存在硬盘中则使用Directory directory = FSDirectory.open(new File(path))创建一个directory对象。

如果要保存在内存中则使用:RAMDirectory directory=new RAMDirectory()创建一个directory对象。

(2)、创建Document对象。

Document doc =new Document();创建了一个不含有任何Field的空Document,如果要要Field添加到Document中,则使用add(Field)方法即可实现。

doc.add(field)。

(3)、创建Field对象。

Field field=new Field(Field名称,Field内容,存储方式,索引方式);

存储方式分为3种:1、完全存储(Field.Store.YES);2、不存储(Field.Store.NO);3、压缩存储(Field.Store.COMPRESS)。

索引方式分为4种:1、不索引(Field.Index.NO);2、 Field.Index.ANALYZED ;3、 Field.Index.NOT_ANALYZED;4、Field.Index.NOT_ANALYZED_NO_NORMS

创建一个简单的索引程序代码如下所示:

public void Index() {
String[] ids = { "1", "2", "3", "4" };
String[] names = { "aa", "bb", "cc", "dd" };
String[] contents = {
"Using AbstractJExcelView to export data to Excel file via JExcelAPI library",
"Using AbstractPdfView to export data to Pdf file via Bruno Lowagie’s iText library. ",
"Example to integrate Log4j into the Spring MVC application. ",
"Using Hibernate validator (JSR303 implementation) to validate bean in Spring MVC. " };
IndexWriter writer = null;
try {
Directory directory = FSDirectory.open(new File(path));
// RAMDirectory directory=new RAMDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35,
new StandardAnalyzer(Version.LUCENE_35));
writer = new IndexWriter(directory, iwc);
Document doc = null;
for (int i = 0; i < ids.length; i++) {
doc = new Document();
doc.add(new Field("id", ids[i], Field.Store.YES,
Field.Index.NOT_ANALYZED_NO_NORMS));
doc.add(new Field("name", names[i], Field.Store.YES,
Field.Index.NOT_ANALYZED_NO_NORMS));
doc.add(new Field("contents", contents[i], Field.Store.YES,
Field.Index.ANALYZED));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
doc.add(new Field("date", sdf.format(new Date()),
Field.Store.YES, Field.Index.NOT_ANALYZED));
// Field.Index.ANALYZED; writer.addDocument(doc);
writer.commit();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

lucene学习-创建索引的更多相关文章

  1. lucene简介 创建索引和搜索初步

    lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...

  2. lucene中创建索引库

    package com.hope.lucene;import org.apache.commons.io.FileUtils;import org.apache.lucene.document.Doc ...

  3. lucene入门创建索引——(二)

    1.程序宏观结构图

  4. 搜索引擎系列 ---lucene简介 创建索引和搜索初步

    一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 :Lucene得名于Doug妻子 ...

  5. 搜索引擎学习(二)Lucene创建索引

    PS:需要用到的jar包: 代码实现 1.工程结构 2.设置工程依赖的jar包 3.代码实现 /** * Lucene入门 * 创建索引 */ public class CreateIndex { / ...

  6. HBase中创建索引

    hbasene(https://github.com/akkumar/hbasene)是开源项目,在hbase存储上封装使用Lucene来创建索引,代码API非常简单,熟悉lucene的朋友可以很方便 ...

  7. lucene&solr学习——创建和查询索引(代码篇)

    1. Lucene的下载 Lucene是开发全文检索功能的工具包,从官网下载Lucene4.10.3并解压. 官网:http://lucene.apache.org/ 版本:lucene7.7.0 ( ...

  8. lucene&solr学习——创建和查询索引(理论)

    1.Lucene基础 (1) 简介 Lucene是apache下的一个开放源代码的全文检索引擎工具包.提供完整的查询引擎和索引引擎:部分文本分析引擎. Lucene的目的是为软件开发人员提供一个简单易 ...

  9. Apache Lucene(全文检索引擎)—创建索引

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...

随机推荐

  1. cdev结构体及其相关函数

    一.在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下: struct cdev { struct kobject kobj; struct module *owner; //所属模 ...

  2. EasyUI-DataGrid动态合并单元格

    js /** * EasyUI DataGrid根据字段动态合并单元格 * @param fldList 要合并table的id * @param fldList 要合并的列,用逗号分隔(例如:&qu ...

  3. [Parcel] Running TypeScript with parcel-bundler

    TO get started with TypeScirpt quickly in your local computer is using parcel-bunlder: npm i -g parc ...

  4. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 贝福IO模块介绍

    EL1002,EL1004,EL1008都是数字输入模块(2个点,4个点,8个点),输入高的范围是15V到30V,低的范围是-3V到5V         EL2002,EL2004,EL2008都是数 ...

  5. EffectManager

    using UnityEngine; using System.Collections; public class EffectManager : MonoBehaviour { public Ani ...

  6. 浅谈Android移动开发程序员的职业发展之路

    现在几乎每个it公司都在开发移动产品,我最早知道Android还是在09年成都某学院上大学的时候,从新闻上知道有这么一家公司,创始人安迪·鲁宾很有名,但安卓到底是做什么的,我并没有关注. 到2010年 ...

  7. JavaScript | 基础表单验证(纯Js)

    ———————————————————————————————————————————— 基础表单验证(纯js) - - - - - - - - - - - - - - - - - - - - - - ...

  8. C++/C混合编程

    C与C++混合编程 C++ 是在 C 语言的基础上发展起来的.在某种程度上,我们可将 C++ 看做 C 的一种扩展.在本质上,二者的数据类型和函数调用惯例都是一致的,因此 C 与 C++ 混合编译也是 ...

  9. SDWebImage源代码解析(一)

    一.概念 SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类.以支持从远程server下载并缓存图片的功能. 二.优势 自从iOS5.0開始.NSURLCache也能够 ...

  10. 关于行内元素之间有空隙的问题,例如span与input之间

    问题如图: 想要的是下面的效果,而却出现上面的效果,解决方法如下: 对于行元素span或者input来说 很多人会用inline-block来显示他们,但是往往发现  中间会留一段小空隙 , 其实这个 ...