1、问题:
目前索引里面已经有1000多万的数据了,现在需要每几分钟就增量得添加新的内容到索引中。
但是,我发现新加入索引后,整个索引结构都要重新调整。非常耗时(长达半个小时)。
不知道大家有没有什么比较好的办法,加快这个过程?
回答:
我觉得用lucene做,一个原则索引里面尽量少存储,索引文件小了,optimize要移动的数据块也小。
还有Lucene实在不适合做实时,有一个办法,将新索引建在内存中,新建在内存上的searcher与硬盘索引searcher合并为MutliSearcher提供给前端搜索,
内存到达一定量时再后台合并到主索引上,合并完成用新的Searcher替换MutliSearcher。 --来自网络,仅供学习
RAMDirectory和FSDirectory相结合使用
//创建基于RAMDirectory的索引
RAMDirectory rd = new RAMDirectory();
IndexWriter iw = new IndexWriter(rd,new StandardAnalyzer());
….
//向基于RAMDirectory的索引中添加文档
iw.addDocument(doc);
iw.close();
//建立基于FSDirectory的索引
FSDirectory fd = FSDirectory.getDirectory("mix");
IndexWriter writer = new IndexWriter(fd,new StandardAnalyzer());
//把缓存在RAMDirectory中的所有数据写入FSDirectory
writer.addIndexes(new Directory[] {rd});
writer.close();
同样可以反过来用,将文件系统中的索引读入内存中,就需要使用如下的方法:
RAMDirectory rd=new RAMDirectory();
2、上周在使用范围搜索时又遇到问题 ,程序抛出TooManyClauses exception。后来才发现lucene将范围搜索转化为精确匹配,每个匹配对应一个clause,所以如果你的范围如果包含超过1024个索引值,程序就会抛错
方案1:BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE)
改变限制,这个可以解决问题,但有隐患,如果某个范围的索引特别多,内存会有爆掉的危险。
方案2:使用filter--来自网络,仅供学习
3、昨天改了一个晚上代码都无法使搜索引擎创建文件索引到硬盘中,经过调试发觉已经把文档、字段提取到了内存索引器中,然而在把内存索引书写器中的索引传递给硬盘索引书写器时似乎没有传送成功,
只出现segments.gen和segments_2。单独使用FSDirectory时,却是在硬盘相应目录中能够看到索引文件啊!
fsWriter.addIndexesNoOptimize(Directory[] {ramdir});
明明已经写上了这句了啊?第二天上午翻翻资料,发觉有一份资料强调:在合并内存索引器的索引到硬盘索引器前,务必先关闭内存索引器。于是我试着在前面加上"ramWriter.close();",果然终于出现了久违的.cfs文件。
这个问题的关键是在任何时候对索引的更新操作的实例只能有一个存在
分享到:
相关推荐
总结,利用LUCENE.NET开发WEB搜索引擎是一项技术含量高的工作,涉及到数据爬取、文本处理、索引构建、搜索算法等多个环节。通过深入理解和实践,开发者可以构建出高效、灵活的搜索引擎,满足不同场景的需求。
在本篇文章中,我们将深入探讨如何使用Lucene来搜索中文PDF文档,以及在这个过程中可能遇到的关键技术和挑战。 首先,我们要了解Lucene的核心概念。Lucene通过建立倒排索引来实现快速文本搜索。倒排索引是一种数据...
总结来说,开发一个基于Lucene和Heritrix的搜索引擎是一个涉及多种技术和步骤的复杂过程。理解Lucene和Heritrix的工作原理和使用方法,以及如何将两者结合构建有效的搜索引擎,对于完成这项工作至关重要。同时,针对...
在实际开发中,确保所有必要的DLL和文件都已正确配置是至关重要的。在"用到的DLL及文件"中,除了盘古分词的DLL外,可能还包括其他Lucene库文件,如lucene-core.jar、lucene-analyzers.jar等。这些文件是构建和运行...
总的来说,Lucene提供了一套完整的框架,涵盖了从文本处理到搜索结果返回的全过程,使开发者能够专注于构建具有高级搜索功能的应用,而无需关心底层实现细节。通过理解Lucene的基本原理和使用方法,我们可以构建出...
### nutch+lucene开发自己的搜索引擎知识点总结 #### 一、概览 - **标题与描述**: 本资料“nutch+lucene开发自己的搜索引擎ch3.pdf”聚焦于介绍如何使用Nutch和Lucene来构建自己的搜索引擎,特别强调了第三章:...
在 Maven 项目中,可以在 pom.xml 文件中添加 Lucene 的依赖,或者在其他构建工具中进行相应的配置。对于非 Maven 项目,可以直接下载 Lucene 的 JAR 包并将其添加到项目的类路径中。 **Lucene 的基本组件** 1. **...
本篇文章将深入探讨如何基于Lucene开发一个文件检索系统,以及如何扩展其功能以支持多种文件格式。 ### Lucene核心概念 1. **索引(Index)**: 在Lucene中,索引是将非结构化的文本数据转换为结构化的倒排索引的...
在构建搜索引擎的过程中,Lucene 和 Heritrix 是两个至关重要的工具。本文将深入探讨这两个工具的功能及其如何协同工作,帮助读者理解如何使用它们来开发一个高效且功能强大的搜索引擎。 #### 二、Lucene 2.0 **1....
结合笔者的实际开发经验,总结了一些新的开发技巧和开发思路,并对网上流传的一些错误...本书既可为零起点的Lucene初学者提供系统全面的学习指导,也可帮助有相关经验的开发者解决在开发过程中遇到的一些难题和疑惑。
总结来说,"lucene3.5 + ik中文分词器例子"是一个展示如何使用Lucene进行中文全文检索的示例,它涵盖了从数据抓取、分词处理、索引建立到查询执行的全过程。通过这个实例,开发者可以更好地理解和掌握Lucene与IK分词...
Lucene的出现,使得开发人员能够轻松地在他们的应用中添加高级搜索功能。作为一个高性能的信息检索库,Lucene主要包含以下组件:索引、搜索、分析和高亮显示。在3.6版本中,它保持了对大量文档高效处理的能力,并且...
Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在目标系统中实现全文搜索功能或构建一个完整的全文搜索引擎。 Lucene的主要优点包括: 1. 索引文件格式独立于应用平台:Lucene定义了一套以8位字节为...
Lucene搜索引擎开发权威经典 光盘 于天恩 著 中国铁道出版社出版 2008-10 这本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精练简洁,恰到好处。 本书共包括16章,...
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了索引和搜索大量文本数据的能力。在这个基于Lucene的文件管理系统中,我们利用Lucene的强大功能来组织、管理和检索文件,极大地提高了工作效率。...
标题中的".NET Lucene 源代码"表明我们将探讨的是如何在.NET环境下利用Lucene进行搜索引擎的开发,并且会涉及到源代码层面的解析。描述中提到的“简单易用”,揭示了Lucene的核心特性之一,即它对开发者友好,易于...
总结,理解和掌握Lucene中的中文分词算法源码,不仅有助于我们优化搜索性能,还能为定制化需求提供技术支持。通过深入学习这些分词器的工作原理,开发者可以更好地调整分词策略,以适应特定的应用场景,提升系统的...
总结来说,通过对“lucene 华电项目 源码”的深入研究,我们可以全面了解Lucene在电力行业信息检索中的实际运用,掌握其核心原理,并从中学习到如何优化搜索性能、处理专业词汇以及利用高级功能提升用户体验。...
《深入剖析Lucene.NET 2.9.1:源码解析与应用...总结,Lucene.NET 2.9.1的源码不仅是一份学习资料,也是实践中的宝贵工具。深入理解其工作机制,将有助于提升.NET平台上的搜索技术能力,实现高效、精准的全文检索功能。