Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “线程中的异常”;“主要”;org.apache.lucene.index.IndexNotFoundException:在org.apache.lucene.store.SimpleFSDirectory中找不到segments*文件_Java_Lucene - Fatal编程技术网

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)