2012-10-16 3 views
5

編集:私は解決策を見つけました:core.jarを編集し、コーデックパッケージを除くすべてのパッケージを削除してビルドパスに追加します。コーデックパッケージはjar、ソースコードにすることはできません 私は理解できません、これはLuceneのための非常に簡単なコードです、それはLuceneのコアライブラリで動作しますが、Luceneのコアソースを使用するとエラーが発生します。エラー単純な例lucene 4.0ソース(jar libではない)

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

エラーは次のとおりです。

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

参照:私はしましたhttp://stackoverflow.com/questions/9474625/how-to-debug-solr-test-cases-in-eclipse – kenorb

+0

Lucene42によって生成されたsolrインデックスを開くためにLukeを使用するときの同様のエラー。 – kenorb

答えて

0

あなたがクラスパスにLuceneのjarを追加する必要があります。

これで解決しない場合は、jarをインデックスディレクトリにコピーします。

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

アンパックウェブアプリで瓶の中には、カスタムメイドの戦争のために、 であり、自分自身のMANIFESTディレクトリを持っていません。ルーク瓶にはコード があり、スタンドアロンの瓶です。

も参照してください:

How Do I Execute CheckIndex In LWE2.1

関連する問題