利用Lucene的IndexWriter建立索引(详解)

/*

* 建立索引,然后把建立后的文档添加到索引中去

* 提示先使用Document和Field把Field加入到Document中去,

* 接着把Document建立成为一个索引

* */

package comThree;

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.index.IndexWriter;

public class BookIndex{

//创建索引的目录

private String INDEX_PATH = "E:\\Lucene项目\\索引目录";

Document  bookdoc1 = null;

public BookIndex(){

bookdoc1 = new Document();

System.out.println("开始创建书的Field字段---------->>>>");

//书的编号

Field bookNo = new Field("booknumber", "FB309663004", Field.Store.YES, Field.Index.TOKENIZED);

//书名

Field bookName = new Field("bookName", "钢铁是怎样炼成的", Field.Store.YES, Field.Index.TOKENIZED );

//书的作者

Field anthor = new Field("author", "匿名", Field.Store.YES, Field.Index.TOKENIZED);

//出版日期

Field publishdate = new Field("publishdate", "出版日期", Field.Store.YES, Field.Index.NO);

//描述

Field bookabstract = new Field("abstract", "钢铁是怎样炼成的", Field.Store.NO, Field.Index.TOKENIZED);

//价格

Field price = new Field("price", "25.00", Field.Store.YES, Field.Index.NO);

System.out.println("完成创建书的Field字段---------->>>>");

System.out.println("开始将书的字段放入到文档中-------------》》");

//把Field加入Document

bookdoc1.add(bookNo);

bookdoc1.add(bookName);

bookdoc1.add(bookabstract);

bookdoc1.add(publishdate);

bookdoc1.add(price);

System.out.println("完成书的字段放入到文档中------------->>>>>");

try{

System.out.println("开始创建索引-------------------->>>>");

//创建索引实例

IndexWriter writer = new IndexWriter(INDEX_PATH, new StandardAnalyzer());

//构建一个indexWriter的实例

writer.addDocument(bookdoc1);

//在这里必须要关闭,否则会出现异常,例如数据没有写入完整。

writer.close();

System.out.println("完成索引的创建并且存储完毕, 索引的存放位置在:" + INDEX_PATH);

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String[] args){

BookIndex BI = new BookIndex();

}

}

时间: 2024-07-30 10:18:05

利用Lucene的IndexWriter建立索引(详解)的相关文章

mysql 联合索引详解

mysql 联合索引详解   联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效. 两个或更多个列上的索引被称作复合索引.利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引.复合索引的结构与电话簿类似,人名由

mysql索引详解,摘自《MySQL 5权威指南》

本文介绍了数据库索引,及其优.缺点.针对MySQL索引的特点.应用进行了详细的描述.分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用.本文摘自<MySQL 5权威指南>(3rd)的8.9节.(2007.07.05最后更新)        索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢.每修改数据记录,索引

mysql 索引 详解

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录

Oracle索引详解

Oracle索引详解(一) ### --索引介绍 ??索引对于Oracle学习来说,非常重要,在数据量巨大的状况下,使用恰到好处的索引,将会使得数据查询时间大大减少,于2017/12/25暂时对Oracle中的索引进行一个大致的了解. 索引的创建语法 索引的特点 索引的不足 比较适合建立索引的列的特点 不适合建立索引的列的特点 限制索引(建立了索引,但是无法使用) 查询索引 组合索引 Oracle rowid 选择性 群集因子 二元高度 快速全表扫描 跳跃式扫描 索引的创建语法 create o

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

一.IndexWriter详解 问题1:索引创建过程完成什么事? 分词.存储到反向索引中 1. 回顾Lucene架构图: 介绍我们编写的应用程序要完成数据的收集,再将数据以document的形式用lucene的索引API创建索引.存储. 这里重点要强调应用代码负责做什么,lucene负责做什么. 2. Lucene索引创建API 图示 通过该图介绍lucene创建索引的核心API:Document.IndexWriter Lucene中要索引的文档.数据记录以document表示,应用程序通过I

mysql联合索引详解

所有的MySQL列类型能被索引.在相关的列上的使用索引是改进SELECT操作性能的最好方法. 一.前缀索引 对于CHAR和VARCHAR列,你可以索引列的前缀.这更快并且比索引整个列需要较少的磁盘空间.在CREATE TABLE语句中索引列前缀的语法看起来像这样: KEY index_name (col_name(length))下面的例子为name列的头10个字符创建一个索引: mysql> CREATE TABLE test (name CHAR(200) NOT NULL,KEY inde

elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状态值说明 Green - everything is good (cluster is fully functional),即最佳状态Yellow - all data is available but some replicas are not yet allocated (cluster i

MySQL数据库索引详解

一.什么是索引: 索引是一个排序的列表,在这个列表中存储着索引值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询速度,这是因为使用索引后可以不用全表扫描来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据. 索引通过不断缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机事件变成顺序事件,也就是说,有个这个机制我们可以总是用同一种查找方式来锁定数据: 索引实际就是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引也是占了一大

MySQL 索引详解大全

1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2. 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可. 索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度索引的优点是可以提高检索数据的速度索引的缺点是创建和维护索引需要耗费时间索引可以提高查询速度,会减慢写入速度 索引分类 1.普通索引    2.唯一索引