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. Web安全1&沙箱隔离

    1.web安全 Web安全的本质是信任问题 •由于信任,正常处理用户恶意的输入导致问题的产生 •非预期的输入(就是不是程序员预期的客户的输入) 安全是木桶原理,短的那块板决定的木桶世纪能装多少水,同样 ...

  2. laravel5.5入口文件分析

    入口文件 public/index.php 1.加载composer的自动加载器 require __DIR__.'/../vendor/autoload.php'; 自动加载,不用再各种requir ...

  3. long转int

    由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...

  4. 剑指Offer - 九度1508 - 把字符串转换成整数

    剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例 ...

  5. python学习笔记十三:Flask demo

    一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...

  6. 【Regularization】林轩田机器学习基石

    正则化的提出,是因为要解决overfitting的问题. 以Linear Regression为例:低次多项式拟合的效果可能会好于高次多项式拟合的效果. 这里回顾上上节nonlinear transf ...

  7. chrome flash插件改为自动运行

    1.情景展示 国内网页视频播放大部分用的都是flash插件,每次都要将默认改为允许,才能正常播放         能不能让flash插件在所有的网站上都能自动运行呢? 2.解决方案 第一步:打开fla ...

  8. Python列表深浅复制详解

    转自:https://www.cnblogs.com/blaomao/p/7239203.html 在文章<Python 数据类型>里边介绍了列表的用法,其中列表有个 copy() 方法, ...

  9. Python的HttpClient实现

    Python版本3.4(注意python的版本,python2和python3的写法不一样) 其实无非就是客户端的请求,所以python中这里使用的是urllib.request模块.主要注意的是he ...

  10. Python编码报错

    Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:SyntaxErr ...