(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的事务性和实时索引构建 Lucene虽然主要用于离线索引构建,但也支持一定程度上的事务性操作和实时索引更新。这对于需要频繁更新索引的应用场景非常重要。 #### 十、其他相关问题 除了以上核心知识...
在当今的互联网开发中,数据检索和实时交互性已经成为不可或缺的功能。Lucene作为一个强大的全文搜索引擎库,为开发者提供了高效的文本搜索能力;Compass作为Lucene的一个高级封装,简化了在应用程序中集成搜索引擎...
6. **Lucene 的事务性**:Lucene 不直接支持事务,但在设计上支持高并发环境下的安全操作,可以通过外部机制实现事务性的需求。 7. **构建实时索引**:Lucene 支持实时更新索引,允许在不重启服务的情况下增加、...
它支持事务处理、数据仓库、数据分析等多种业务场景,提供强大的性能和稳定性。然而,SQL Server在全文搜索方面虽然内置了一些功能,但在复杂查询和高效率的全文检索方面,可能无法满足所有需求。 这就是Lucene.NET...
Spring框架则是一个全面的企业级应用开发框架,它包括了依赖注入、面向切面编程、事务管理等功能,可以有效简化应用的复杂性。Hibernate则是一个持久层框架,负责对象关系映射(ORM),使得开发者可以使用Java对象来...
- **Compass**:基于Lucene的高级搜索框架,提供了一种更简便的方式来集成Lucene到应用程序中,支持事务、缓存和实时检索等功能。 - **GazelleQuery**:Compass扩展了Lucene的查询机制,提供了更丰富的查询语法和...
- **MyBatis SqlSession**:执行SQL查询的入口,管理数据库事务。 - **Lucene Analyzer**:分析器,将用户输入的关键词拆分成可以索引的 tokens。 - **IndexWriter**:构建和更新索引的主要类。 - **QueryParser**:...
Spring 3是一个较旧的版本,但仍然广泛使用,因为它具有良好的兼容性和稳定性。 3. **Spring Archetypes**:Spring Archetypes是Maven的一个概念,它提供了预定义的项目结构和配置,使得开发者可以快速启动一个新的...
**Spring框架** 在这里主要扮演服务层的角色,它是一个全面的后端解决方案,提供了依赖注入、事务管理、AOP(面向切面编程)等功能。在搜索功能的实现中,Spring可以帮助管理Lucene的相关组件,如索引目录、搜索引擎...
SSH框架是Java Web开发中的常见选择,Spring提供了依赖注入和事务管理,Struts处理MVC模式,而Hibernate则负责对象关系映射。整合Lucene到SSH框架中,可以为Web应用带来强大的搜索能力。 接下来,我们将逐步讲解SSH...
- **高效性**:Lucene能够快速地构建和访问索引,从而实现高效的文档检索。 - **跨平台**:由于基于Java语言开发,因此Lucene能够在不同的操作系统平台上运行,提高了其适用范围。 - **灵活性**:Lucene允许用户...
Struts2提供了丰富的特性,如拦截器、结果类型、动态方法调用等,帮助开发者创建结构清晰、可维护性强的Web应用。在搜索引擎项目中,Struts2可以用于处理用户请求,管理页面流程,并与后端服务进行交互。 **Spring...
iBatis与Spring结合,可以实现事务管理和DAO(Data Access Object)的管理,提高了代码的可维护性和可测试性。 Spring 框架是Java企业级应用的核心框架,它提供了一个全面的基础设施,支持创建和管理Bean、AOP...
总的来说,通过使用Compass+Lucene,开发者可以快速搭建一个高性能的全文搜索引擎,无需依赖数据库的全文索引功能,从而提高查询效率并降低系统复杂性。同时,源码级别的定制能力使得这套解决方案具有很高的可扩展性...
与简单的关键字匹配不同,全文检索能够理解语言结构,如词干分析、同义词识别等,从而提高搜索结果的相关性和准确性。Lucene通过建立倒排索引来实现全文检索,这种方法将文档中的词汇映射到包含该词汇的文档列表,...
### 一种基于Lucene检索引擎的全文数据库的研究与实现 #### 1. 引言 ...综上所述,基于Lucene的全文数据库提供了一种高效、灵活且易于实施的解决方案,对于提高信息检索的准确性和效率具有重要意义。
LUCENE通过版本控制和事务日志来确保在多节点间的更新一致性。当新文档被添加或更新时,它们首先被写入事务日志,然后在后台进行索引,这样即使在节点故障期间,也能保证不丢失数据。 7. **性能调优** 要充分利用...
### Java大数据内容_7Flume、Kafka、Sqoop、Lucene #### 一、Flume 入门 ##### 1.1 Flume 概述 Flume 是一个分布式的、可靠的、高可用的日志采集系统,主要用于收集、汇总和移动大量的日志数据。它由 Cloudera ...
在积分系统中,Spring可以用来管理数据库连接池、事务控制、服务层对象等,确保系统的稳定性和可维护性。 2. **SpringMVC**:这是Spring框架的一个模块,用于处理Web请求。它采用模型-视图-控制器(MVC)架构模式,...