2012-09-11 30 views
0

当我试图寻找我创建了一个指标是开放的:确保目录使用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, 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(); 

使用卢克(Lucene索引观众)我可以确认,该指标存在和数据I输入正确。我的问题是如何检查,该指数是开放的(目前任何没有匹配该指数结果搜索):

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); 

如何检查,该指数已经开通,并准备进行搜索吗?我应该提到这些代码位于不同的类中。

回答

1

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

IndexReader.indexExists(directory)