一些公用的基础类 表 3.2 基础类包org.apache.lucene.util 类 说明 Arrays 一个关于数组的排序方法的静态类,提供了优化的基于快排序的排序方法sort BitVector C/C++语言中位域的java实现品,但是加入了序列化能力 Constants 常量静态类,定义了一些常量 PriorityQueue 一个优先队列的抽象类,用于后面实现各种具体的优先队列,提供常数时间内的最小元素访问能力,内部实现机制是哈析表和堆 ...
Lucene索引文檔格式:   以上就是Lucene的索引文件的概念结构。Lucene索引index由若干段(segment)组成,每一段由若干的文档(document)组成,每一个文档由若干的域(field)组成,每一个域由若干的项(term)组成。项是最小的索引概念单位,它直接代表了一个字符串以及其在文件中的位置、出现次数等信息。 域是一个关联的元组,由一个域名和一个域值组成,域名是一个字串,域值是一个项。 从概念上映射到结构中,索引被处理为一个目录(文件夹),其中含有的所有文件即为其内容,这些文件按照所属的段不同分组存放,同组的文件拥有相同的文件名,不同的扩展名。此 ...
Lucene的目的是为软件开发人员提供一个简单易用的工具包,Lucene的原作者是Doug Cutting。 Lucene作为一个全文检索引擎,其具有如下突出的优点: (1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。 (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。 (4)设计了独立于语言和文件格 ...
     全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。   全文检索的方法主要分为按字检索和按词检索两种。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前 ...
 public abstract class Analyzer { public abstract TokenStream tokenStream(String fieldName, Reader reader); * * @param fieldName Field name being indexed. * @return position increment gap, added to the next token emitted from {@link #tokenStream(String,Reader)} */ public int ...
/** * 關鍵詞提醒 * @param keyword * @return */ public List remindKeyword(String keyword){ List keywordList = new ArrayList(); IndexReader indexReader; try { File indexDir = new File(INDEX_STORE_PATH); if (indexDir.exists()){ indexReader = IndexReader.open(INDEX_STO ...
無特別之處,了解的朋友不用看。 /** * 限制分類的搜索 * @param keyword * @param categoryKeyword * @return * @throws LuceneException */ public List searchIndex(String keyword, String categoryKeyword) throws LuceneException{ Analyzer analyzer = new CJKAnalyzer(); BooleanQuery query = new B ...
txt與html解析存在亂碼的問題,這個問題困擾了我好幾天,最後找到一些資料,通過多次嘗試,基本解決了。   public class TxtDocHander extends DocHander { public Document getDocument(byte[] inputByte) throws IOException { // 進行文檔的編碼格式識別 CodepageDetectorProxy codepageDetectorProxy = CodepageDetectorProxy.getInstance(); codepageDetec ...
上篇有提到這段代碼: DocHander docHander = DocHanderFactory.buildDocHander(fileName); attachDocument = docHander.getDocument(attach);   下面我們看一看實現細節。   抽象類DocHander的代碼: public abstract class DocHander { public static String FIELD_CONTENT = "contents"; publ ...
/** * 文檔主體建立索引 * 注意文檔與附件分成不同的Document,但搜索到附件內容時,需鏈接到其所在文檔 * @param article * @return * @throws InterruptedException * @throws Exception */ private Document createArticleIndex(Article article) throws Exception{ Document document = new Document(); //ID document. ...
對索引操作的類為KbIndexProcesser  文檔主體類:Article public class Article { private String id; private String topic; private String content; private String categoryId; private String category; ....... }  附件實體類:ArticleAttach public class ArticleAttach { private String id; private ...
       《Lucene實戰開發手記》系列文章的適用對象為Lucene初學者。       本人所在項目組正在開發一個Call Center的系統。需要開發一個知識庫來為客服提供知識搜索的支持。採用Lucene做為搜索引擎。   知識庫的需求如下: 1、知識庫以文檔的形式組織,每篇文檔含標題、分類(樹狀)、內容,可上傳多個附件。 2、文檔內容支持html格式,標題、內容、附件均要建立索引,能被搜索到。附件格式支持doc,xls,pdf,txt,htm,html ...
2008-04-15

Lucene入門草稿

关键字: lucene
索引3種方式:倒排、後綴數組和簽名文件. 一段讀寫文本文件的代碼: BufferWriter writer = new BufferWriter(new FileWriter(destFile)); BufferReader reader = new BufferReader(new FileReader(readFile)); String line = reader.readLine(); while (line != null){ writer.write(newline); writer.newLine();//寫入行分割符 } reader.clos ...
cleaneyes
搜索本博客
最近加入圈子
存档
最新评论