(1) 首先做准备,索引十篇文档
File indexDir = new File("TestIsolation/index");
IndexWriter writer = new IndexWriter(FSDirectory.open(indexDir), new StandardAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED);
for(int i =0; i < 10; i++){
indexDocs(writer);
}
writer.close();
(2) 然后再索引十篇文档,并不commit
writer = new IndexWriter(FSDirectory.open(indexDir), new StandardAnalyzer(Version.LUCENE_CURRENT), IndexWriter.MaxFieldLength.LIMITED);
for(int i =0; i < 10; i++){
indexDocs(writer);
}
(3) 打开一个IndexReader,但是由于IndexWriter没有commit,所以仍然仅看到十篇文档。
IndexReader reader = IndexReader.open(FSDirectory.open(indexDir));
IndexSearcher searcher = new IndexSearcher(reader);
TopDocs docs = searcher.search(new TermQuery(new Term("contents","hello")), 50);
System.out.println(docs.totalHits);
(4) IndexWriter进行提交commit
writer.commit();
(5) 不重新打开IndexReader,进行搜索,仍然仅看到十篇文档。
docs = searcher.search(new TermQuery(new Term("contents","hello")), 50);
System.out.println(docs.totalHits);
(6) IndexReader重新打开,则可以看到二十篇文档。
reader = IndexReader.open(FSDirectory.open(indexDir));
searcher = new IndexSearcher(reader);
docs = searcher.search(new TermQuery(new Term("contents","hello")), 50);
System.out.println(docs.totalHits);
|
相关推荐
总结,Lucene 5.x的JdbcDirectory是将索引存储在数据库中的高级特性,它带来了分布式存储和数据一致性的优势,但也带来了一些挑战,如性能和成本问题。开发者需要根据具体的应用需求权衡选择,合理利用这一功能,...
在选择使用哪种技术时,应根据实际需求来决定,如数据类型、查询复杂性、性能要求以及是否需要事务支持等因素。了解它们之间的差异,有助于我们更有效地解决实际问题,提高系统的性能和用户体验。
总之,Lucene-JDBC是一个历史性的项目,它展示了如何利用Java JDBC接口将Lucene索引与数据库结合,这对于了解搜索引擎与数据库的集成,以及学习如何扩展Lucene存储机制有着重要的参考价值。尽管当前可能有更先进的...
相比之下,关系型数据库在过去的二十余年里,因其操作便捷、易于维护、便于访问和安全性强的特点,在事务处理领域占据了主导地位。它们最初是为了满足诸如库存控制、工资计算、账目处理等传统应用场景而设计的。然而...
6. **事务处理**:由于数据库支持事务,可以确保索引更新的一致性和完整性。 7. **并发控制**:数据库提供行级锁定,可帮助处理多线程环境下的并发问题。 8. **备份和恢复**:数据库自身的备份功能使得恢复索引变...
- **高效性**:Lucene能够快速地构建和访问索引,从而实现高效的文档检索。 - **跨平台**:由于基于Java语言开发,因此Lucene能够在不同的操作系统平台上运行,提高了其适用范围。 - **灵活性**:Lucene允许用户...
6. **Lucene 的事务性**:Lucene 不直接支持事务,但在设计上支持高并发环境下的安全操作,可以通过外部机制实现事务性的需求。 7. **构建实时索引**:Lucene 支持实时更新索引,允许在不重启服务的情况下增加、...
标题 "conquiris-lucene-3.5.0.zip" 提供了我们即将探讨的知识点:Lucene,一个开源的全文搜索引擎库。Lucene是由Apache软件基金会开发的Java库,它提供了高级文本分析和索引功能,使得开发者可以轻松地在应用程序中...
**正文** 在IT行业中,搜索功能是任何复杂应用不可或缺的一部分,它使得用户能够高效地查找所需信息。...在实际开发中,还需要考虑并发控制、索引更新策略以及性能优化等问题,以确保系统的稳定性和效率。
#### 九、Lucene的事务性和实时索引构建 Lucene虽然主要用于离线索引构建,但也支持一定程度上的事务性操作和实时索引更新。这对于需要频繁更新索引的应用场景非常重要。 #### 十、其他相关问题 除了以上核心知识...
它支持事务处理、数据仓库、数据分析等多种业务场景,提供强大的性能和稳定性。然而,SQL Server在全文搜索方面虽然内置了一些功能,但在复杂查询和高效率的全文检索方面,可能无法满足所有需求。 这就是Lucene.NET...
在处理大规模数据时,分页是一种有效的展示策略,可以避免一次性加载过多数据导致的性能问题。在本系统中,我们利用SpringMVC的模型绑定功能,结合Lucene和MyBatis的查询能力,实现了基于关键词的文档搜索结果的分页...
- **Compass**:基于Lucene的高级搜索框架,提供了一种更简便的方式来集成Lucene到应用程序中,支持事务、缓存和实时检索等功能。 - **GazelleQuery**:Compass扩展了Lucene的查询机制,提供了更丰富的查询语法和...
然后通过Ajax实现前端与后端的无刷新通信,当用户在搜索框中输入关键词时,立即向服务器发送请求,服务器利用Lucene进行查询,并用Ajax返回结果,这样就能在用户输入的同时展示相关的搜索结果,极大地提升了搜索效率...
1. **环境准备**:确保项目中已经引入了Lucene的相关库,包括core、queryparser和analyzers-common等模块。同时,SSH框架也需配置正确,以便后续操作。 2. **索引创建**:在Struts Action或Spring Service层,定义...
在积分系统中,Spring可以用来管理数据库连接池、事务控制、服务层对象等,确保系统的稳定性和可维护性。 2. **SpringMVC**:这是Spring框架的一个模块,用于处理Web请求。它采用模型-视图-控制器(MVC)架构模式,...
Cutting创建Lucene的目的是为了简化在各种规模的应用程序中实现全文检索的复杂性。自2001年起,Lucene成为了Apache基金会的一部分,并且随着时间的推移,许多知名的Java项目如Jive、Cocoon和Eclipse都采用了Lucene...
Spring框架则是一个全面的企业级应用开发框架,它包括了依赖注入、面向切面编程、事务管理等功能,可以有效简化应用的复杂性。Hibernate则是一个持久层框架,负责对象关系映射(ORM),使得开发者可以使用Java对象来...
iBatis与Spring结合,可以实现事务管理和DAO(Data Access Object)的管理,提高了代码的可维护性和可测试性。 Spring 框架是Java企业级应用的核心框架,它提供了一个全面的基础设施,支持创建和管理Bean、AOP...
本文探讨了一种基于Lucene检索引擎的全文数据库的实现方案,通过将全文检索技术与文件系统相结合,有效地解决了非结构化文本数据的管理和检索问题。这种方法不仅提高了检索效率,还降低了系统的复杂度,对于需要处理...