Lucence初学小记

Lucence初学小记

一. 流程
1.索引流程:采集数据 --> 构建文档对象 -->创建索引(文档写入索引库)
2.搜索流程:创建查询 --> 执行搜索 --> 渲染结果

二. 具体过程
1. 索引流程
(1) 构建索引库

Directory directory = FSDectory.open(new File("索引"));

(2) 指定分词器

Analyzer analyzer = new StandardAnalyzer(Version.LUCENCE_40)

			Version.LUCENCE 一般填目前最高版本

(3)创建文档对象,并添加相关字段值

Document doc = new Document();
doc.add(new Field("stu",stu.getId,Store.YES,Index.NOT_Analyzed));
		其中,stu是属性名,stu.getId是属性值
		Store.YES  当前字段存入文档 ,   Store.NO  当前字段不存入文档
		ANALYZED 当前字段建立索引,并进行分词,会产生多个term
		NOT_ANALYZED 当前字段建立索引,不进行分词,整体一个term
		NO 不创建索引

(4)创建索引库操作对象,添加文档,提交

IndexWriter indexWriter = new IndexWriter(directory,analyzer,MaxFieldLength.LIMITED);
		其中,MaxFieldLength 用于限制field大小,可以有计划的对大文档Field进行截取。

(5)关闭操作对象

indexWriter.close();

2.搜索流程
(1)打开索引库

Directory directory = FSDirectory.open(new File("索引"));

(2)创建查询分词器(版本号要与写入时的保持一致)

Analyzer analyzer = new StardardAnalyzer(Version.LUCENCE_40);

(3)创建查询解析器,参数位版本号,查询字段名,分词器

QueryParser parser = new QueryParser(Version.LUCENCE_40,"stu",analyzer);    //分词器版本号,参数名,分词器

(4)构建查询信息对象

Query query = parse.parse(keyWord);      //关键字

(5)构建查询工具

IndexSearcher searcher = new IndexSeacher(directory);

(6)通过查询工具执行查询

TopDocs topdocs = searcher.seach(query,10);    //查询信息对象,返回的记录数
		TopDocs 包括总记录数,文档重要信息(编号等)的列表等

(7)根据文档编号遍历真正的文档

ScoreDoc scoredoc = topdocs.scoreDocs[i];
int no =scoredocs.doc;   //取出编号
// ScoreDoc []scoredocs = topdocs.scoreDocs;
Document document = indexSearch.doc(no);
String stu = document.get("stu");

(8)转为Java对象
(9)关闭查询操作对象

search.close();

Life is fantastic!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值