public class LuceneFactory
{
// song索引
private static IndexReader songReader = null;
private static IndexSearcher songSearcher = null;
private static Directory songDirectory = null;
private static File songDir = new File(ConstantsData.SONG_INDEX_PATH);
public static synchronized IndexReader getSongIndexReader(File file)
throws IOException {
if (songReader == null) {
songDirectory = FSDirectory.open(file);
songReader = DirectoryReader.open(songDirectory);
} else {
songReader = DirectoryReader.openIfChanged((DirectoryReader)songReader);
}
return songReader;
}
public static synchronized IndexSearcher getSongIndexSearcher()
throws IOException {
if (songReader == null)
{
songDirectory = FSDirectory.open(songDir);
songReader = DirectoryReader.open(songDirectory);
} else
{
IndexReader newReader = DirectoryReader.openIfChanged((DirectoryReader) songReader);
if (newReader != null)
{
songReader.close();
songReader = newReader;
}else{
}
}
songSearcher = new IndexSearcher(songReader);
return songSearcher;
}
}
///////////////////////////////////////////////////////////
public class WriteIndex
{
//new File("C:\\Tomcat\\webapps\\index\\ad\\"); //
public static File songDir = new File(ConstantsData.SONG_INDEX_PATH);
public static IndexWriter songWriter = null;
public static Directory songDirectory = null;
static{
initSongWrite();
}
public static void initSongWrite()
{
try
{
// 创建song索引目录
if (songDir.exists()) {
songDirectory = FSDirectory.open(songDir);
if (IndexWriter.isLocked(songDirectory)) {
IndexWriter.unlock(songDirectory);
}
songWriter = new IndexWriter(songDirectory, new IndexWriterConfig(Version.LUCENE_4_9, ConstantsData.ana));
} else {
songDir.mkdirs();
songDirectory = FSDirectory.open(songDir);
songWriter = new IndexWriter(songDirectory, new IndexWriterConfig(Version.LUCENE_4_9, ConstantsData.ana));
}
} catch (Exception e)
{
e.printStackTrace();
}
}
//添加song索引
public static void createsongIndex(Song bean)
{
if(songWriter == null || bean == null)
return;
try
{
Document doc = SongSearch.getSongDocument(bean);
songWriter.addDocument(doc);
songWriter.commit();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
1、LuceneFactory 这种方式创建单例IndexReader 和 IndexSearcher 对不对?
能实时索引吗?效率高吗?有没有更好的方式。。
2、WriteIndex 创建索引效果咋样?能实时索引吗?如果频繁添加索引, songWriter.commit();效率好吗?
相关推荐
以上就是Lucene索引器实例的基本介绍,通过这个实例,我们可以理解到如何使用Lucene来创建、管理和搜索文本索引。在实际项目中,可以根据需求选择合适的存储(如硬盘目录或分布式存储)、优化分析器配置、处理大量...
- 索引创建过程中可能会遇到各种异常,应添加适当的错误处理机制。 - 对于大量文档,可能需要考虑分批处理以避免内存溢出等问题。 通过以上步骤,我们可以有效地使用Lucene3.0来创建索引,从而提高文本数据的检索...
这个实例将深入讲解如何在 Java 中使用 Lucene 来创建索引并执行各种搜索操作。 ### 一、Lucene 基本概念 1. **索引(Index)**:Lucene 的核心功能是建立索引,它将非结构化的文本数据转换成可供快速搜索的数据...
- 需要创建一个`IndexWriter`对象,指定索引存储的位置及索引的配置选项。 - 对于每个XML文档中的元素,可以创建一个`Document`对象,并将其添加到`IndexWriter`中。 3. **索引文档元素** - 在SAX处理器中,对于...
经典的Lucene实例代码及详细解析以及Lucene结构流程介绍 Lucene是一个功能强大且灵活的开源搜索引擎库,它提供了一个简单易用的API,允许开发者快速构建搜索应用程序。下面将对Lucene的实例代码和结构流程进行详细...
1. **索引分片**:在Zoie中,首先需要对数据进行分片,每个分片由一个单独的Lucene实例处理。这样可以充分利用多核处理器的并行能力,提高索引构建速度。 2. **实时索引**:当有新数据到来时,Zoie会在后台创建一个...
这个"lucene实例"的压缩包文件很可能是为了演示或教学如何使用Lucene进行文本检索和分析。Lucene的核心功能包括文档索引、搜索、排序以及相关性评分等,它被广泛应用于各种信息检索系统中,如网站搜索、企业内部信息...
本教程主要探讨的是如何利用Lucene进行索引优化,特别是通过多线程和处理多个目录来提高索引创建效率。 首先,我们需要理解Lucene的索引原理。Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排...
本篇文章将详细阐述如何使用Lucene来创建和查询索引,帮助你深入理解其核心概念和操作流程。 ### 1. Lucene基本概念 - **文档(Document)**:在Lucene中,一个文档代表你要索引的信息单元,它可以包含多个字段...
二、Lucene索引创建流程 1. 初始化:首先,我们需要导入Lucene库,并创建一个标准的Analyzer,例如StandardAnalyzer,它对输入的文本进行标准化处理。 2. 创建索引目录:索引数据会存储在一个Directory对象中,...
在这个实例中,我们将深入探讨如何使用Lucene.NET 2.9.2来实现索引的生成、修改、查询和删除。 **一、索引生成** 首先,我们需要创建一个索引,这是全文检索的基础。在Lucene.NET中,我们通常会定义一个文档类,...
Java搜索工具——Lucene实例总结(一) 在Java开发中,搜索引擎已经成为不可或缺的一部分,而Apache Lucene正是一个强大的全文搜索引擎库。这篇博文将带你深入理解Lucene的基本概念和使用方式,帮助你快速入门并掌握...
- **首次创建索引**:首先,我们需要遍历整个数据源,创建每个文档的实例,然后将这些文档添加到Lucene的索引writer中。完成这一步后,就会生成一个完整的初始索引。 - **监控数据变更**:为了实现增量索引,我们...
在网上找了实例,但是发现不能使用,只能简历索引。...lucene3.6版本,能够建立索引,能搜索。inderwriter,indexsearch. 其中包C下的helloword实例能用,其余的全是网上不能用的。直接下载 可以运行
本文将详细介绍如何使用Lucene.NET对数据库进行索引创建以及实现高效的搜索功能。 首先,我们需要了解Lucene.NET的基本概念。Lucene是一个开源的Java项目,而Lucene.NET是它的.NET版本,它提供了对文本进行索引和...
创建索引是 Lucene 的第一步,这个过程称为索引构建。在 LuceneTest02 示例中,我们可能会看到如何读取数据源(如文件、数据库或内存中的数据),创建文档对象,并将每个文档的字段添加到文档中。接着,使用 ...
本实例将探讨如何结合Lucene和SQL Server数据库来实现高效的索引和搜索功能。 Lucene是一个由Apache软件基金会开发的全文检索库,它提供了一个高级的、可扩展的、基于Java的搜索程序库。Lucene的核心功能包括文档的...
**Lucene实例项目及其打包文件详解** Lucene是一款强大的全文搜索引擎库,由Apache软件基金会开发,广泛应用于各种信息检索系统。这个实例项目是基于Lucene官网提供的,旨在帮助开发者更好地理解和使用Lucene进行...