05 2010 档案
摘要:使用Lucene自带的Highlighter就可以实现对原始文件摘要的提取工作。Highlighter类有一个getBestFragment方法,这个方法有多个重载的方法,其中,使用:public final String getBestFragment(Analyzer analyzer, String fieldName,String text)就可以提取摘要,它实现了从指定的原始文件中,提取...
阅读全文
摘要:关于Hits类。这个Hits类可是非常的重要,因为Lucene使用了缓存机制,关于缓存的实现就是在这个Hits类中。Hits工作过程中,使用了LRU算法,即通过一个HitDoc结构来实现一个双向链表,使用LRU置换算法,记录用户最近访问过的Document。开门见山,直接拿出Hits类的实现代码来说话。package org.apache.lucene.search;import java.io....
阅读全文
摘要:当执行Hits htis = search(query);这一行代码的时候,到底中间经过了怎样的过程,最终使得我们获取到了含有检索结果的集合Hits hits呢?这里,以最简单的检索为例,追踪并理解Lucene(2.2.0版本)获取到检索结果的过程。1、IndexSearcher继承自Searcher类的最简单的search方法,如下所示:public final Hits search(Quer...
阅读全文
摘要:Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下: 0)设有两篇文章1和2 文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too. 文章2的内容为:He once lived in Shanghai. 1)由于lucene是基于关键词索引和查询的,首先我们要取得这两篇文章...
阅读全文
摘要:关于Lucene检索结果的排序问题。已经知道,Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。下面研究几种设置/改变检索结果排序的方法。■ 改变Document的boost(激励因子)改变boost的值实现改变检索结果集的排序,是最简单的方法,只需要在建立索引的过程中,设置指定的Do...
阅读全文
摘要:关于Lucene得分的计算。在IndexSearcher类中有一个管理Lucene得分情况的方法,如下所示:public Explanation explain(Weight weight, int doc) throws IOException { return weight.explain(reader, doc);}返回的这个Explanation的实例解释了Lucene中Document的...
阅读全文
摘要:回到IndexWriter索引器类中来,学习该类添加Document的方法。这时,需要用到一个非常重要的类:DocumentWriter,该类对Document进行了很多处理,比如“文档倒排”就是其中的一项重要内容。实例化一个IndexWriter索引器之后,要向其中添加Document,在IndexWriter类中有两个实现该功能的方法:public void addDo...
阅读全文