资源简介
lucene执行的两个主要步骤如下
1、建立索引的执行过程
在建立索引时,先要把文档存到索引库中,还要更新词汇表。
操作步骤如下:
(1)、把数据对象转换成相应的Document,其中的属性转为Field;
(2)、调用工具IndexWriter的addDocument(doc),把Document添加到索引库中;
(3)、Lucene做的操作:
把文档存到索引库中,并自动指定一个内部编号,用来唯一标识这个条数据;内部编号类似与这条数据的地址,在索引库内部的数据进行调整后,这个编号就可能会改变,同时词汇表中的引用的编号也会做相应的改变,以保 证正确。
更新词汇表。把文本中的词找出来放到词汇表中,简历与文档的对应关系。要把那些词放到词汇表中呢?这就用到一个叫Analyzer(分词器)的工具。他的作用是把一段文本中的词按照规则取出所包含的所有词。对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由其子类实现。
在把对象的属性转化为 Field时,相关代码为:
doc.add(new Field(“title”,article.getTitle(), Store.YES, Index.Analyzed))
其中第三个参数的意思为
Store.NO 不存储属性的值;
Store.YES 存储属性的值
第四个参数
Index.NO 不建立索引
Index.ANALYZED 分词后建立索引
Index.NOT_ANALYZED 不分词,把整个内容作为一个词建立索引
Store是影响搜索出的结构是否有指定属性的原始内容。
Index是影响是否可以从这个属性中查询,或者是查询时可以查其中的某些词,还是要把整个内容作为一个词进行查询。
2、从索引库中搜索的执行过程(QueryParse、TopDocs、ScoreDoc)
在进行搜索时,先在词汇表中查找,得到符合条件的文档编号列表。再根据文档编号真正的取数据(Document)
操作步骤如下:
(1)、把要查询字符串转为Query对象。这就像在Hiberante总是用HQL查询时,也要先调用Session.createQuery(hql)转成Hibernate的Query对象一样。把查询字符串转换成Query是使用QueryParser,或者使用MultiFieldQueryParser。查询字符串也要先经过Analyzer(分词器)。要求检索时使用Analyzer要与监理索引使用的Analzyer要一致,否则可能搜索不出正确的结果。
(2)、调用IndexSearcher.search(),进行查询,得到结果。此方法返回未TopDocs,是包含结果的多个信息的一个对象。其中有totalHits代表记录数,ScoreDoc的数组。ScoreDoc是代表一个结果的相关度得分与文档编号等信息的对象。
(3)、取出要用到的数据列表。调用IndexSearcher.doc(scoreDoc.doc)以取出指定编号对应的Document数据,在分页时要用到:一次只取一页的数据。
代码片段和文件信息
/**
* 文件名 :DataUtil.java
* 创建日期 :2012-12-20
* Copyright (c) 2003-2012 个人版权所有
* All rights reserved.
*/
package com.lucene.c01;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.lucene.po.User;
/**
* 生成测试数据
*
* @version 1.00
* @author 文超
*
*/
public class DataUtil {
/**
* 检索资源数据的准备;
* 这里的数据可以来源数据库、文件系统等
* @return
*/
public static List getUsers(){
List list =new ArrayList();
User user =new User(1L“张三1“20“man“new Date());
list.add(user);
user =new User(2L“张三2“20“man“new Date());
list.add(user);
user =new User(3L“张三3“20“woman“new Date());
list.add(user);
user =new User(4L“张三4“20“man“new Date());
list.add(user);
user =new User(5L“张三5“20“ma
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 962 2012-12-20 14:02 lucene\.classpath
文件 1039 2012-12-20 13:50 lucene\.project
文件 503 2012-12-20 13:50 lucene\.settings\.jsdtscope
文件 395 2012-12-20 13:50 lucene\.settings\org.eclipse.jdt.core.prefs
文件 523 2012-12-20 13:50 lucene\.settings\org.eclipse.wst.common.component
文件 345 2012-12-20 13:50 lucene\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2012-12-20 13:50 lucene\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2012-12-20 13:50 lucene\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 1871 2012-12-20 15:47 lucene\build\classes\com\lucene\c01\DataUtil.class
文件 4315 2012-12-20 16:02 lucene\build\classes\com\lucene\c01\IndexWriterDemo.class
文件 2213 2012-12-20 15:20 lucene\build\classes\com\lucene\c01\TestIndexWriterFSDirectory.class
文件 2110 2012-12-20 16:08 lucene\build\classes\com\lucene\c01\TestIndexWriterRAMDirectory.class
文件 1560 2012-12-20 14:07 lucene\build\classes\com\lucene\po\User.class
文件 1323 2012-12-20 15:47 lucene\src\com\lucene\c01\DataUtil.java
文件 2305 2012-12-20 16:02 lucene\src\com\lucene\c01\IndexWriterDemo.java
文件 1154 2012-12-20 14:07 lucene\src\com\lucene\po\User.java
文件 1448 2012-12-20 15:20 lucene\test\com\lucene\c01\TestIndexWriterFSDirectory.java
文件 1399 2012-12-20 16:08 lucene\test\com\lucene\c01\TestIndexWriterRAMDirectory.java
文件 39 2012-12-20 13:50 lucene\WebContent\me
文件 1537988 2012-12-20 13:54 lucene\WebContent\WEB-INF\lib\lucene-core-3.6.1.jar
文件 711 2012-12-20 13:50 lucene\WebContent\WEB-INF\web.xm
目录 0 2012-12-20 14:38 lucene\build\classes\com\lucene\c01
目录 0 2012-12-20 14:05 lucene\build\classes\com\lucene\po
目录 0 2012-12-20 14:05 lucene\build\classes\com\lucene
目录 0 2012-12-20 14:07 lucene\src\com\lucene\c01
目录 0 2012-12-20 14:05 lucene\src\com\lucene\po
目录 0 2012-12-20 14:38 lucene\test\com\lucene\c01
目录 0 2012-12-20 14:02 lucene\build\classes\com
目录 0 2012-12-20 14:05 lucene\src\com\lucene
目录 0 2012-12-20 14:02 lucene\test\com\lucene
............此处省略15个文件信息
- 上一篇:java lucene搜索 常用
- 下一篇:elasticsearch的java使用
相关资源
- Java 在指定目录下搜索文件
- java lucene性能优化 方案(支持千万级
- Sturts敏感字过滤及校验
- dubbo(java源码)
- JAVA爬虫 javaReptile
- java 在指定文件夹搜索指定类型的文件
- java 哲学家就餐问题
- javamail(比较简单的邮件发送库)
- java WindowBulider界面
- android animation
-
android fr
ame 动态图片效果 附完整 - Activity生命周期
- android TextView、EditText和ImageView代码
- Camera预览
- Android 展开android通知栏(兼容4.2及以
- Camera 录像
- android 自定义对话框 实例源码下载3
- android 可自定义样式的dialog
- Android实现Windows风格的Dialog
- android 自定义列表选择Dialog,可网络请
- 自定义带有删除功能的edittext,在登录
- android 仪表盘 实例源码下载3590
- android 二维码扫描 实例源码下载3471
- android Aidl入门
- 动态创建选项卡franment
- handler的使用,异步操作
-
测试ba
seAdapter的 - AltertView的使用及
- 帧布局应用
- 相对布局应用
评论
共有 条评论