关于Lucene的一点感想

研究了一下Lucene,发现其实检索可以这么简单地做!Lucene提供了一种反向检索的方式,,反向索引是一种以索引项为中心来组织文档的方式,每个索引项指向一个文档序列,这个序列中的文档都包含该索引项。相反,在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。你可以利用反向索引轻松的找到那些文档包含了特定的索引项。

 

Lucene中出现的术语整理了一下:

Analyzer:分词器,是一个抽象类,需要有特定的实现,这个是lucene的核心类,所有的检索的一句都是这个实现决定的。
IndexWriter :索引写入类,构造方法IndexWriter(Directory d, IndexWriterConfig conf)

IndexWriterConfig:索引配置类,设置不同的属性值,可以实现索引的写入方式(新建,追加,覆盖)构造方法IndexWriterConfig(Version matchVersion, Analyzer analyzer),与一个分词器相关联。

Document:描述一个索引的基本元素,索引文件的单位。

Field:索引域,可以把索引信息当做一个表格,Document就是整个表格,Field即是表格的列。内容包括key_value键值对。




IndexReader:索引读取类,IndexReader.open(FSDirectory.open(new File(index))); 需要使用FSDirectory打开索引文件,貌似只有这样才能使Lucene的读取速度优化代码起作用。

IndexSearcher:检索类,以IndexReader构造。实用方法:public TopDocs search(Query query, Filter filter, int n),可以过滤文件

QueryParser:查询类,以new QueryParser(Version.LUCENE_31, field, analyzer); field是构造索引时的field的key值。比较实用的方法是public Query parse(String query),返回查询结果。

Query:QueryParser执行parse后的返回结果。


一次查询其实可以分为大的两个阶段(有点废话):1.构造索引文件2.通过索引文件检索信息

感觉可以把IndexWriter想象成一个数据库,Document是表格,Field是表格的列,然后这是个文件数据库系统。。。

实际上Lucene做的工作只是把预置的查询结果按特定格式保存起来,这点非常重要,建索引时指定的术语其实可以看做模糊的关键字,说白了,所有的想在时间上提速的工作归根结底需要用空间来换。

另外附一个Lucene的关键字列表(我分的):

分词(Analyzer),写索引(IndexWriter),读索引(IndexReader),文档(Document),域(Field),查询(Query),查找(Searcher),分页(Paging),得分(Score)

学习lucene可以从这些关键字展开。

 

 

 



转载于:https://www.cnblogs.com/liupeizhi/articles/2390029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值