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. 5. css定位 居中

    1.准备工作 (1)添加背景图片 background: url('images/grass.png') (2)背景图片格式 background-size:contain; #完全限制在方框 #co ...

  2. Django基本使用

    目录 1 安装 1.1 安装pip 1.2 安装django 2 创建项目 2.1 使用 管理工具 django-admin.py 来创建 PyLearn 项目: 2.2 启动服务 本文章以下所有列子 ...

  3. 使用Windows SFC和DISM工具来解决服务器OS问题

    TechTarget中国原创] 随着使用时间的越来越多,Windows服务器安装的系统文件可能会被损坏或损毁.管理员一般可以通过系统自带的System File Checker (SFC) 或者更健壮 ...

  4. 剑指Offer - 九度1519 - 合并两个排序的链表

    剑指Offer - 九度1519 - 合并两个排序的链表2013-11-30 22:04 题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hi ...

  5. windows 10的资源管理器不显示映射的网络驱动器怎么办?

    最近在使用映射网络驱动器的时候出现一个奇怪的现象.事情源于我在资源管理器里面映射了来自多个不同账号的网络驱动器.使用的是win10系统.映射不同账号的网络驱动器是不允许的.于是只能删掉其他账号和凭证重 ...

  6. App自动化测试前期准备---android SDK配置

    说明:就是配置android SDK 一.sdk下载 Windows(X64):立即下载 Linux(X64):立即下载 二.Windows配置 1.解压文件 直接解压到指定目录(演示目录:D:/) ...

  7. Python学习1,代码

      看了好久的网上视频,今天尝试着写了一串代码: _author_ = "Happyboy" produce_list = [ ('Iphone',5800), ('Mac Pro ...

  8. 课时5:闲聊之Python的数据类型

    目录: 一.引言 二.数据类型 >整型 >浮点型 >布尔类型 三.类型转换 四.获得关于类型的信息 五.课时05课后习题及答案 *********** 一.引言 ********** ...

  9. leetcode 149. 直线上最多的点数 解题报告

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...

  10. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...