2015-05-27 84 views
1
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40); 

我乳寧Lucene搜索代碼,我得到一個錯誤在上面的行話說LUCENE_40不能得到解決或無法在現場

LUCENE_40 cannot be resolved or is not a field 

我使用Lucene 5.1.0版本。


我從標準分析器參數刪除version.LUCENE_40,所以現在有一個在代碼中沒有錯誤,但是當我運行的代碼,我得到一個錯誤:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/lucene/analysis/Analyzer : Unsupported major.minor version 51.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
Could not find the main class: HelloLucene. Program will exit. 

下面的代碼:

import org.apache.lucene.document.StringField; 
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.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.ScoreDoc; 
import org.apache.lucene.search.TopScoreDocCollector; 
import org.apache.lucene.store.Directory; 
import org.apache.lucene.store.RAMDirectory; 
import org.apache.lucene.util.Version; 

import java.io.IOException; 


public class HelloLucene { 
    public static void main(String[] args) throws IOException, ParseException { 

     StandardAnalyzer analyzer = new StandardAnalyzer(); 
     Directory index = new RAMDirectory(); 
     IndexWriterConfig config = new IndexWriterConfig(analyzer); 
     IndexWriter w = new IndexWriter(index, config); 
     addDoc(w, "Lucene in Action", "193398817"); 
     addDoc(w, "Lucene for Dummies", "55320055Z"); 
     addDoc(w, "Managing Gigabytes", "55063554A"); 
     addDoc(w, "The Art of Computer Science", "9900333X"); 
     w.close(); 
     String querystr = args.length > 0 ? args[0] : "lucene";  
     Query q = new QueryParser("title", analyzer).parse(querystr); 
     int hitsPerPage = 10; 
     IndexReader reader = DirectoryReader.open(index); 
     IndexSearcher searcher = new IndexSearcher(reader); 
     TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage); 
     searcher.search(q, collector); 
     ScoreDoc[] hits = collector.topDocs().scoreDocs; 
     System.out.println("Found " + hits.length + " hits."); 
     for(int i=0;i<hits.length;++i) { 
      int docId = hits[i].doc; 
      Document d = searcher.doc(docId); 
      System.out.println((i + 1) + ". " + d.get("isbn") + "\t" + d.get("title")); 
     } 

     reader.close(); 
    } 

    private static void addDoc(IndexWriter w, String title, String isbn) throws IOException { 
     Document doc = new Document(); 
     doc.add(new TextField("title", title, Field.Store.YES)); 

     doc.add(new StringField("isbn", isbn, Field.Store.YES)); 
     w.addDocument(doc); 
    } 
} 
+0

您的代碼適用於我。檢查你的類路徑,並確保* all * lucene jar版本是5.1。如果您有任何較舊的lucene jar,請確保它們已從類路徑中移除,並替換爲最新版本。聽起來你可能在5.1版本中使用lucene-core,但分析器 - 在早期版本中很常見。或者反之亦然。 – femtoRgon

回答

4

好吧,就像它說的那樣,Version.LUCENE_40doesn't existLucene_4_0呢,但這隻會帶給你下一個問題:

StandardAnalyzer不再需要一個版本參數。只需使用:

StandardAnalyzer analyzer = new StandardAnalyzer(); 
+0

謝謝...現在甚至沒有在程序中的一個單一的錯誤,但是當我執行代碼我在線程「主」java.lang.UnsupportedClassVersionError異常:org/apache/lucene/analysis/Analyzer:Unsupported major.minor version 51.0 –

相關問題