确保使用lucene时目录处于打开状态

确保使用lucene时目录处于打开状态,lucene,Lucene,我正在尝试搜索我创建的索引: File index = new File("C:/MyIndex"); Directory indexDir = FSDirectory.open(index); StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36,

我正在尝试搜索我创建的索引:

    File index = new File("C:/MyIndex");
    Directory indexDir = FSDirectory.open(index);
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);
    IndexWriter writer = new IndexWriter(indexDir, config); 

    Document doc = new Document();
    doc.add(new Field("My Data", Integer.toString(Id) , Field.Store.YES, Field.Index.NO));

indexDir.close();
使用Luke(lucene索引查看器),我可以验证索引是否存在以及输入的数据是否正确。我的问题是如何检查索引是否打开(当前对此索引的任何搜索都不会导致匹配):

File indexDir=新文件(“C:/CustomerNovation”);
Directory=FSDirectory.open(indexDir);
IndexReader=IndexReader.open(目录);
IndexSearcher search=新的IndexSearcher(阅读器);
Analyzer Analyzer=新标准分析仪(版本:LUCENE_36);
QueryParser parser=新的QueryParser(Version.LUCENE_36,”,新的StandardAnalyzer(Version.LUCENE_36));
Query=parser.parse(searchQuery);
调试(“searchQuery:+searchQuery”);
log.debug(“查询:+query.toString());
int hits=100;
int hitsPerPage=10;
TopScoreDocCollector=TopScoreDocCollector.create(hitsPerPage,true);
searcher.search(查询、收集器);
返回的int=collector.topDocs().totalHits;
log.debug(“返回:”+返回);
ScoreDoc[]numHits=collector.topDocs().scoreDocs;
列表结果=新建ArrayList();
for(int i=0;i

如何检查索引是否已打开并准备好搜索?我应该提到,这些代码位在不同的类中。

要检查指定目录中是否存在索引,请使用indexExists方法

IndexReader.indexists(目录)

    File indexDir = new File("C:/CustomerInnovation");
    Directory directory = FSDirectory.open(indexDir);
    IndexReader reader = IndexReader.open(directory);
    IndexSearcher searcher = new IndexSearcher(reader);
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
    QueryParser parser = new QueryParser(Version.LUCENE_36, " ", new StandardAnalyzer(Version.LUCENE_36));
    Query query = parser.parse(searchQuery);
    log.debug("searchQuery: " + searchQuery);
    log.debug("query: " + query.toString());
    int hits = 100;
    int hitsPerPage = 10;
    TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
    searcher.search(query, collector);
    int returned = collector.topDocs().totalHits;
    log.debug("returned: " + returned);

    ScoreDoc[] numHits = collector.topDocs().scoreDocs;
    List<Document> results = new ArrayList<Document>();

    for (int i = 0; i < numHits.length; i++) {
        int docId = numHits[i].doc;
        Document d = searcher.doc(docId);
        results.add(d);
        log.debug(d.get("customername"));
    }

    log.debug("Found: " + numHits.length);