异常:org.apache.lucene.index.CorruptIndexException: failed to locate current segments_N file
at org.apache.lucene.index.IndexFileDeleter.<init>(IndexFileDeleter.java:223)
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:670)
at org.apache.lucene.demo.IKAnalyzerDemo.createIndex(IKAnalyzerDemo.java:45)
at org.apache.lucene.demo.IKAnalyzerDemo.main(IKAnalyzerDemo.java:185)
未能找到当前segments_N文件
建索类:
String fieldName = "title";
String fieldValue="content";
Analyzer analyzer = new IKAnalyzer();
/**
* 创建索引
* @param pathFile 索引存放位置
*/
@SuppressWarnings("deprecation")
public void createIndex(String pathFile){
String text1 = "上海(Shanghai),简称“沪”或“申”,中国第一大城市,中华人民共和国直";
String text2 = "天津,简称津,中华人民共和国直辖市、中国国家中心城市、中国北方经济中心、.";
String text3 = "北京是中华人民共和国的首都、直辖市和国家中心城市之一,";
try {
//文件生成在classpath下
//RAMDirectory directory = new RAMDirectory();
Directory directory = FSDirectory.open(new File(pathFile));
//索引存放文件夹 通过测试该文件夹可以持续放入索引 每建索一次 就会生成对应的文件
//Directory directory=FSDirectory.open(new File(pathFile));
IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_34, analyzer);
IndexWriter indexWriter = new IndexWriter(directory, writerConfig);
/**
* Field.Store.YES 表示是否存储 Field.Index.ANALYZED 表示对该对象是否建索
* 一般存储需要展示的内容,对有用的如:标题、内容进行建索,链接或者序号不用建索。
*/
Document document1 = new Document();
document1.add(new Field(fieldName, "中国上海", Field.Store.YES, Field.Index.ANALYZED));
document1.add(new Field(fieldValue, text1, Field.Store.YES, Field.Index.ANALYZED));
indexWriter.addDocument(document1);
Document document2 = new Document();
document2.add(new Field(fieldName, "中国天津", Field.Store.YES, Field.Index.ANALYZED));
document2.add(new Field(fieldValue, text2, Field.Store.YES, Field.Index.ANALYZED));
indexWriter.addDocument(document2);
Document document3 = new Document();
document3.add(new Field(fieldName, "北京", Field.Store.YES, Field.Index.ANALYZED));
document3.add(new Field(fieldValue, text3, Field.Store.YES, Field.Index.ANALYZED));
indexWriter.addDocument(document3);
//此时删除的文档并未完全删除,而是存储在回收站中,可以恢复的
//indexWriter.forceMergeDeletes();
//indexWriter.ramSizeInBytes();
indexWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
解决方法:修改pathFile文件夹路径 。
谷歌了一下,好像是上次建索失败导致。具体原因不知道,希望知道原因的大手给解释一下!虾米不胜感激!
相关推荐
首先,Luence.net是Apache Lucene项目的一个.NET版本,Lucene作为业界知名的全文搜索引擎库,以其开源、高性能而广受好评。Luence.net则继承了Lucene的优点,并针对.NET环境进行了优化,提供了易于使用的.NET API,...
3. **文档对象模型(Document)**:在Luence中,每个要索引的实体都表示为一个Document对象,可以包含多个Field,每个Field代表不同的属性。在Demo中,我们会看到如何创建和填充Document对象,以及如何将它们添加到...
Lucene,作为一个开源的全文搜索引擎库,被广泛应用于各种信息检索系统中。它提供了一套高效、灵活的文本搜索解决方案,使得开发者能够快速地在大量数据中实现高效的全文检索功能。本文将深入探讨Lucene的工作原理、...
"luence客户端测试软件luke" 指的是一个名为"Luke"的工具,它是针对Apache Lucene(一个流行的全文搜索引擎库)的客户端测试和分析工具。Luence可能是“Lucene”的拼写错误,但在这里我们假设指的是Lucene。 **描述...
Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格的搜索和数据分析引擎。两者在面试中常常被提及,以下是对这两个技术的关键知识点的深入解析。 首先,Lucene...
在 Lucene 中,索引是一个预处理步骤,通过这个过程,原始文本数据被转换成一种可以快速查询的数据结构。这个过程包括分词(Tokenization)、词干提取(Stemming)、停用词过滤(Stop Word Filtering)等文本处理...
在IT领域,搜索引擎技术是不可或缺的一部分,而Apache Lucene是一个高性能、全文本搜索库,它为开发者提供了构建自定义搜索引擎应用程序所需的所有工具。本篇我们将深入探讨如何在Lucene中实现模糊搜索,以及相关的...
读者将学习如何创建一个简单的Lucene应用,理解其核心组件如Analyzer、Document、Field和IndexWriter。 2. **文本处理**:Analyzer是Lucene处理文本的关键部分,它负责将输入的文本拆分成可搜索的术语。书中会详细...
首先,我们需要创建一个 `MultiFieldQueryParser` 来解析查询字符串,并构建一个空的查询条件,以便检索所有文档: ```csharp Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29); // ...
IKAnalyzer是一个专门针对中文的分词工具,而Lucene则是一个全文检索框架。这里我们深入探讨这两个组件以及它们的关联。 **IKAnalyzer** 是一个高性能的Java实现的中文分词器,特别适合于搜索引擎或者文本分析场景...
标题 "luence索引例子" 暗示我们要探讨的是Lucene,一个广泛使用的全文搜索引擎库,它在处理大量文本数据时提供了高效的检索能力。在这个例子中,我们将深入理解如何利用Lucene创建索引来优化数据库记录的搜索性能。...
lucene 原理与分析,底层源码解析,应用场景及实践,相关配置
- 倒排索引:Term类表示一个词项,Term Frequency-Inverted Index (TF-IDF)是Lucene的核心数据结构,用于存储每个词项在哪些文档中出现以及出现次数。 2. **查询处理**: - 查询解析:QueryParser将用户输入的...
Lucene是Apache软件基金会的一个开放源代码项目,它是一个高性能、全文本检索库,提供了Java实现的全文检索引擎。Lucene的主要功能包括文档的索引和搜索,支持多种数据源,如文本文件、数据库等。在Java应用中集成...
标题中的“Lucene”是一个全文搜索引擎库,常用于构建高效的搜索功能。它是开源的,用Java编写,但在.NET环境中可以通过Lucene.NET实现跨平台。在本案例中,它被用于处理用户输入的句子,可能涉及到索引、搜索和分析...
在搜索过程中,客户端首先会创建一个`IndexSearcher`实例,然后利用`QueryParser`或`MultiFieldQueryParser`构建查询。查询对象创建完成后,通过`IndexSearcher`执行查询,得到`TopDocs`对象,包含了匹配文档的分数...
它提供了一个模型-视图-控制器(MVC)架构,使开发者能够清晰地分离业务逻辑、数据处理和用户界面。在本项目中,Spring MVC作为后端的核心组件,负责接收前端请求,处理业务逻辑,与数据库交互,并返回响应数据。它...
该步骤中,`IndexSearcher`遍历子读取器(`subReaders`),为每个读取器设置下一个文档的起始位置,并根据`collector`是否接受文档顺序错乱来调用权重对象的`scorer`方法,获取评分器(`Scorer`)。评分器用于实际计算每...
在Lucene中,可以通过定义一个停用词表来实现这个功能。stopword+dic表示我们可以自定义一份停用词字典,比如在压缩包中的luncene文件可能就包含了这样的自定义停用词表。 自定义停用词表的使用步骤通常是: 1. ...
每个Document对应实际数据中的一个记录。 3. 构建查询:使用QueryParser将用户输入的查询字符串转换为Query对象。 4. 执行查询:使用Searcher的search方法,传入Query对象,获取TopDocs对象,其中包含了匹配的文档...