package cn.lucene;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.Date; import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory; public class First { public static void main(String[] args) throws IOException {
long startTime = new Date().getTime();
/*
* Analyzer:建立索引时使用的分析器 主要子类有StandardAnalyzer(一个汉字一个词)
* 还可以由第三方提供如开源社区提供一些中文分词器
*/
Analyzer analyzer = new StandardAnalyzer();
/*
* Directory:代表索引文档的存储位置 这是一个抽象类有FSDirectory和RAMDirectory两个主要子类
* 前者将索引写入文件系统,后者将索引文档写入内存
*/
Directory dir = FSDirectory.open(Paths.get("E:\\LuceneIndex"));
// 操作索引库的配置信息
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
// 建立索引的核心类,用来操作索引(增、删、改)
IndexWriter iw = new IndexWriter(dir, iwc);
addDoc(iw, "1", "libiao1", "张三是中国人1",20160101);
addDoc(iw, "2", "libiao2", "李四是美国人2",20160102);
addDoc(iw, "3", "libiao3", "王五是中国人3",20160103);
addDoc(iw, "4", "libiao4", "马六是俄国人4",20160104);
addDoc(iw, "5", "libiao5", "赵七是中国人5",20160105);
addDoc(iw, "6", "qqqq", "苏八是中国人5",20160106);
addDoc(iw, "7", "bbbb", "我是中国人5",20160107);
iw.close(); long endTime = new Date().getTime();
System.out.println((endTime - startTime) + "s");
} private static void addDoc(IndexWriter iw, String id, String name, String title, Integer dt) throws IOException {
Document doc = new Document();
/*
* @NumericDocValuesField:存储long类型。日期与时间也可以转换为数字类型存储与筛选
*
* @DoubleDocValuesField:存储double类型
*
* @StringField:构造函数。内部调用setTokenized(false)设置不分词。一般用于国家名、作者名、id等
*
* @TextField:构造函数。内部调用setTokenized(true)实现分词。一般用于文档正文
*/
doc.add(new StringField("id", id,Store.YES));
doc.add(new StringField("name", name, Store.YES));
doc.add(new TextField("title", title, Store.YES));
doc.add(new StringField("dt", dt.toString(),Store.YES));//用于查询的属性
doc.add(new NumericDocValuesField("dt", dt));//用于排序的属性 iw.addDocument(doc);
} }

  

第五步:Lucene创建索引的更多相关文章

  1. lucene创建索引的几种方式(一)

    什么是索引: 根据你输入的值去找,这个值就是索引 第一种创建索引的方式: 根据文件来生成索引,如后缀为.txt等的文件 步骤: 第一步:FSDirectory.open(Paths.get(url)) ...

  2. lucene创建索引简单示例

    利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...

  3. Lucene创建索引和索引的基本检索(Lucene 之 Hello World)

    Author: 百知教育 gaozhy  注:演示代码所使用jar包版本为 lucene-xxx-5.2.0.jar 一.lucene索引操作 1.创建索引代码 try { // 1. 指定索引文件存 ...

  4. Lucene创建索引流程

    1.创建索引流程 原始文档:互联网上的网页(爬虫或蜘蛛).数据库中的数据.磁盘上的文件 创建文档对象(非结构化数据) 文档对象中的属性不叫属性现在成为域. 每个 Document 可以有多个 Fiel ...

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

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

  6. lucene创建索引

    创建索引. 1.lucene下载. 下载地址:http://archive.apache.org/dist/lucene/java/. lucene不同版本之间有不小的差别,这里下载的是lucene ...

  7. 搜索引擎学习(五)Lucene操作索引

    一.代码分析 /** * Lucene入门 * 操作索引 */ public class ManageIndex { public IndexWriter getIndexWriter() throw ...

  8. HTML5离线Web应用实战:五步创建成功

    [IT168 技术]HTML5近十年来发展得如火如荼,在HTML 5平台上,视频,音频,图象,动画,以及同电脑的交互都被标准化.HTML功能越来越丰富,支持图片上传拖拽.支持localstorage. ...

  9. Lucene系列五:Lucene索引详解(IndexWriter详解、Document详解、索引更新)

    一.IndexWriter详解 问题1:索引创建过程完成什么事? 分词.存储到反向索引中 1. 回顾Lucene架构图: 介绍我们编写的应用程序要完成数据的收集,再将数据以document的形式用lu ...

随机推荐

  1. PC端网站转换为webApp工具

    百度开发云site App:http://siteapp.baidu.com/

  2. Bit与Byte的区别

    在工作中遇到一些概念模糊的地方, 需要记住了bit意为“位”或“比特”,是计算机运算的基础: byte意为“字节”,是计算机文件大小的基本计算单位: 说到usb2.0标准接口传输速率.许多人都将“48 ...

  3. python的inspect模块

    一.type and members 1. inspect.getmembers(object[, predicate]) 第二个参数通常可以根据需要调用如下16个方法: 返回值为object的所有成 ...

  4. yum源是什么

    我们安装软件的时候需要下载软件,将很多软件放在一起就是源.软件安装包的来源. 所以yum源就是软件安装包来源. 如果我们是在线的,他会在网上给你下载安装包,如果是离线的没有网络.那么就只能配置本地的y ...

  5. 出现java.lang.IllegalArgumentException异常

    严重: Servlet.service() for servlet [office] in context with path [/office] threw exception [Request p ...

  6. [部署开发环境]部署django的生成环境nginx+uwsgi+django

    #教程 # ubuntu部署django项目 # 部署准备 - ubuntu操作系统 -- vagrant虚拟 - Nginx服务器 -- 安装在ubuntu的web服务器 - uWSGI应用协议服务 ...

  7. iOS如何隐藏状态栏,包括网络标志、时间标志、电池标志等

    我们在开发App的时候,在遇到有状态栏时,NavigationBar上面的按钮,是极难点击的,所以这个时候,最好我们能够人为的隐藏掉状态栏. 如果一直需要隐藏的话,直接在info.plist里面,添加 ...

  8. 软件架构---.net框架介绍

    https://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生 ...

  9. stack,heap的区别

    一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操作方式类似于数据结构中的栈.    ...

  10. 学习go语言第一天

    今天先下载了go语言,FQ去下载的,一开始想用eclipse,然后下载了go插件,结果出现错误,我英语水平有限,就换了liteIDE,感觉还不错,go语言环境变量因为我是msi安装的,好像可以不用自己 ...