Java “线程中的异常”;“主要”;org.apache.lucene.index.IndexNotFoundException:在org.apache.lucene.store.SimpleFSDirectory中找不到segments*文件
/* *要更改此模板,请选择工具|模板 *然后在编辑器中打开模板。 */Java “线程中的异常”;“主要”;org.apache.lucene.index.IndexNotFoundException:在org.apache.lucene.store.SimpleFSDirectory中找不到segments*文件,java,lucene,Java,Lucene,/* *要更改此模板,请选择工具|模板 *然后在编辑器中打开模板。 */ 导入java.io.File; 导入java.io.FileReader; 导入java.io.IOException; 导入java.io.Reader; 导入java.util.Date; 导入org.apache.lucene.analysis.standard.StandardAnalyzer; 导入org.apache.lucene.document.document; 导入org.apache.lucene.d
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.Reader;
导入java.util.Date;
导入org.apache.lucene.analysis.standard.StandardAnalyzer;
导入org.apache.lucene.document.document;
导入org.apache.lucene.document.TextField;
导入org.apache.lucene.index.DirectoryReader;
导入org.apache.lucene.index.IndexReader;
导入org.apache.lucene.index.IndexWriter;
导入org.apache.lucene.store.SimpleFSDirectory;
导入org.apache.lucene.index.IndexWriterConfig;
导入org.apache.lucene.queryparser.classic.ParseException;
导入org.apache.lucene.queryparser.classic.queryparser;
导入org.apache.lucene.search.indexsearch;
导入org.apache.lucene.search.Query;
导入org.apache.lucene.search.TopDocs;
导入org.apache.lucene.util.Version;
导入org.apache.lucene.store.Directory;
公共类OpenBookCrackIndexer{
公共静态最终版本luceneVersion=Version.LUCENE_43;
/**
*@param指定命令行参数
*/
公共静态int索引(文件indexDir、目录dataDir)引发IOException{
IndexWriterConfig luceneConfig=新IndexWriterConfig(
luceneVersion,新标准分析仪(luceneVersion));
IndexWriter writer=新的IndexWriter(dataDir,luceneConfig);
File[]files=indexDir.listFiles();
用于(文件:文件){
if(file.getName().endsWith(“.pdf”)){
文档=新文档();
字符串路径=file.getCanonicalPath();
document.getField(路径);
Reader Reader=新文件读取器(文件);
add(新的文本字段(path.toString(),reader));
编写者。添加文档(文档);
}
}
返回writer.numDocs();
}
公共静态无效搜索(字符串str)引发IOException、ParseException{
if(str.isEmpty()){
System.out.println(“错误:+str.toString());
}
File dataDir=新文件(“C:\\Users\\XXXXX\\Desktop\\print\u imp\\Lucene”);
如果(!dataDir.exists()){
抛出新IOException(dataDir+“不存在或不是目录”);
}
//String[]files=dataDir.list();
//for(int i=0;i
在这里,我尝试使用lucene 4.3建立一个基本的文件目录索引。。从《卢森在行动》一书中。由于版本的变化,我不能按原样使用代码。。。
有人能帮我解决我遇到的错误吗…
错误
线程“main”org.apache.lucene.index.IndexNotFoundException中的异常:在org.apache.lucene.store中找不到segments*文件。SimpleFSDirectory@C:\lockFactory=org.apache.lucene.store。NativeFSLockFactory@52fe85:文件:写.写.锁,写.写.写.锁,写.写.锁,0.锁定,0.fdt,0.fdx,,,0.nvm,0.写.写.写.写.锁,0.锁,0.锁定,0.fdt,0.锁,0.锁定,0.锁定,0.fdt,0.fdx,0.fdx,0.FDD,0.锁,0.锁,0.锁,0.锁定,0.锁,0.fdt,0.fdt,0.FD锁,0.FD锁,0.FD锁,0.FD锁,0.FD锁,0.FD锁,0.FD锁,0.FD锁,0.fdt,0.FD锁,0.FD锁,0.0.FD锁,0.FD锁,0.FD锁,0.FD锁,0,0.0.FD锁,0.FD锁,0.FDU,0,0.FDU,0,0.0,0.0.Lucene41_0.tip、_2.fdt、_2.fdx、_2.fnm、_2.nvd、_2.nvm、_2.si、_2_Lucene41_0.doc、_2_Lucene41_0.pos、_2_Lu1.0.tim,2 0 0 0.tim,3.fdt,3.fdx,3.FN,3.nvd,3.nvd,3.nvd,3.nvd,3.nvm,3.nvm,3.si,3 0.tim,0.tim,0.tim,0.tim,2 0.tim,0.tim,1.0.tim,0.4.nvd,3.nvm,3.nvm,3.nvm,3.nvm,3.N,3.N,3.S,3.S,3.si,3.S,3.si,3.S,3.si,3.S,3.S,3.S,3.S,3,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,3.S,.cfs、_7.si、_8.fdt、_8.fdx]
在org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:741)
位于org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
位于org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:66)
您需要使用编写器来提交更改!您检查过是否有段文件吗?@MarkLeightonFisher:我相信异常消息中嵌入了一个目录列表,因此您可以自己检查。异常消息中的文件列表中没有段文件。与其他人一样泰德,看起来像一个未被关闭的卢森作家或类似的东西。
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Date;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.util.Version;
import org.apache.lucene.store.Directory;
public class OpenBookCrackIndexer {
public static final Version luceneVersion = Version.LUCENE_43;
/**
* @param args the command line arguments
*/
public static int index(File indexDir, Directory dataDir) throws IOException {
IndexWriterConfig luceneConfig = new IndexWriterConfig(
luceneVersion, new StandardAnalyzer(luceneVersion));
IndexWriter writer = new IndexWriter(dataDir, luceneConfig);
File[] files = indexDir.listFiles();
for (File file : files) {
if (file.getName().endsWith(".pdf")) {
Document document = new Document();
String path = file.getCanonicalPath();
document.getField(path);
Reader reader = new FileReader(file);
document.add(new TextField(path.toString(), reader));
writer.addDocument(document);
}
}
return writer.numDocs();
}
public static void search(String str) throws IOException, ParseException {
if (str.isEmpty()) {
System.out.println("Error :"+str.toString());
}
File dataDir = new File("C:\\Users\\XXXXX\\Desktop\\print_imp\\Lucene");
if (!dataDir.exists()) {
throw new IOException(dataDir + "does not exist or is not a directory");
}
// String[] files = dataDir.list();
// for(int i = 0;i< files.length;i++){
// System.out.println(files[i].toString());
// }
Directory toSearch = new SimpleFSDirectory(dataDir);
IndexReader indexreader = DirectoryReader.open(toSearch);
IndexSearcher searcher = new IndexSearcher(indexreader);
StandardAnalyzer analyzer = new StandardAnalyzer(luceneVersion);
QueryParser queryParser = new QueryParser(luceneVersion, "Contents", analyzer);
Query query = queryParser.parse(str);
TopDocs td = searcher.search(query, 20);
System.out.println("Number of hits: " + td.totalHits);
for (int i = 0; i < td.totalHits; i++) {
System.out.println("Doc Number " + td.scoreDocs[i].doc + "Score :" + td.scoreDocs[i].score);
}
}
public static void main(String[] args) throws Exception {
File indexDir = new File("C:\\Users\\XXXXX\\Desktop\\print_imp");
File dataDir = new File("C:\\Users\\XXXXX\\Desktop\\print_imp\\Lucene");
if (!indexDir.exists() || !dataDir.exists()) {
throw new IOException(dataDir + "does not exist or is not a directory");
}
//SimpleFSDirectory SDindexDir = new SimpleFSDirectory(indexDir);
SimpleFSDirectory SDdataDir = new SimpleFSDirectory(dataDir);
//Directory dirIndex = SDindexDir;
Directory dirData = SDdataDir;
//long start = new Date().getTime();
//int numIndexed = index(indexDir, dirData);
//long end = new Date().getTime();
//System.out.println("Indexed :" + numIndexed + " Time Took to Index: " + (end - start) + " milliseconds");
search("Algorithms");
}
}
Exception in thread "main" org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.SimpleFSDirectory@C:\<PATH>lockFactory=org.apache.lucene.store.NativeFSLockFactory@52fe85: files: [write.lock, _0.fdt, _0.fdx, _0.fnm, _0.nvd, _0.nvm, _0.si, _0_Lucene41_0.doc, _0_Lucene41_0.pos, _0_Lucene41_0.tim, _0_Lucene41_0.tip, _1.fdt, _1.fdx, _1.fnm, _1.nvd, _1.nvm, _1.si, _1_Lucene41_0.doc, _1_Lucene41_0.pos, _1_Lucene41_0.tim, _1_Lucene41_0.tip, _2.fdt, _2.fdx, _2.fnm, _2.nvd, _2.nvm, _2.si, _2_Lucene41_0.doc, _2_Lucene41_0.pos, _2_Lucene41_0.tim, _2_Lucene41_0.tip, _3.fdt, _3.fdx, _3.fnm, _3.nvd, _3.nvm, _3.si, _3_Lucene41_0.doc, _3_Lucene41_0.pos, _3_Lucene41_0.tim, _3_Lucene41_0.tip, _4.cfe, _4.cfs, _4.si, _5.cfe, _5.cfs, _5.si, _6.cfe, _6.cfs, _6.si, _7.cfe, _7.cfs, _7.si, _8.fdt, _8.fdx]
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:741)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:66)