2012-10-16 23 views
5

Düzenleme: çözümü buldum: core.jar dosyasını düzenleyin, codec paketi dışındaki tüm paketi silin ve yapı yoluna ekleyin, codec paketi jar içinde olmalı, kaynak kod olamaz Anlayamıyorum, bu Lucene için çok basit bir kod, Lucene çekirdek lib ile çalıştırın, ancak Lucene çekirdek kaynağı kullandığımda hataya neden olur.Hata basit bir örnek ile lucene 4.0 kaynak (jar lib değil)

public static void main(String[] args) throws IOException, ParseException { 
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT); 

    // Store the index in memory: 
    Directory directory = new RAMDirectory(); 
    // To store an index on disk, use this instead: 
    // Directory directory = FSDirectory.open("/tmp/testindex"); 
    IndexWriterConfig config = new IndexWriterConfig(
      Version.LUCENE_CURRENT, analyzer); 
    IndexWriter iwriter = new IndexWriter(directory, config); 
    Document doc = new Document(); 
    String text = "This is the text to be indexed."; 
    doc.add(new Field("fieldname", text, TextField.TYPE_STORED)); 
    iwriter.addDocument(doc); 
    iwriter.close(); 

    // Now search the index: 
    DirectoryReader ireader = DirectoryReader.open(directory); 
    IndexSearcher isearcher = new IndexSearcher(ireader); 
    // Parse a simple query that searches for "text": 
    QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, 
      "fieldname", analyzer); 
    Query query = parser.parse("text"); 
    ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs; 
    // Iterate through the results: 
    for (int i = 0; i < hits.length; i++) { 
     Document hitDoc = isearcher.doc(hits[i].doc); 
       System.out.println(hitDoc.get("fieldname")); 
    } 
    ireader.close(); 
    directory.close(); 
} 

hatadır:

Exception in thread "main" java.lang.ExceptionInInitializerError 
     at org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:118) 
     at org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:145) 
     at Test.main(Test.java:34) 
    Caused by: java.lang.IllegalArgumentException: A SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene40' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath.The current classpath supports the following names: [] 
     at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:104) 
     at org.apache.lucene.codecs.Codec.forName(Codec.java:95) 
     at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:122) 
     ... 3 more 
+0

See: http://stackoverflow.com/questions/9474625/how-to-debug-solr-test-cases-in-eclipse – kenorb

+0

Ben ettik Lucene42 tarafından oluşturulan solr endeksi açmak için Luke kullanırken benzer bir hata. – kenorb

cevap

0

Sen Sınıfyoluna Lucene kavanoz eklemek zorunda.

Bu işe yaramazsa, jar dizin dizininize kopyalayın, ör.

java -cp app/luke/lukeall-4.0-dev.jar org.apache.lucene.index.CheckIndex data/solr/cores/collection1_0/data/index/ 

ambalajsız web uygulamasında kavanoz bazıları savaş için ısmarlama ve kendi MANIFEST dizini yok. Luke kavanozu koduna sahiptir ve bağımsız bir kavanozdur.

Ayrıca bakınız:

How Do I Execute CheckIndex In LWE2.1

İlgili konular