Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LUCENE_40无法解析或不是字段_Java_Lucene - Fatal编程技术网

Java LUCENE_40无法解析或不是字段

Java LUCENE_40无法解析或不是字段,java,lucene,Java,Lucene,我正在运行lucene搜索代码,我在上面的一行中得到一个错误 StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40); 我使用的是lucene 5.1.0版本 我已经从标准analyzer参数中删除了version.LUCENE_40,因此现在代码中没有错误,但是当我运行代码时,我得到一个错误: 主线程java.lang.UnsupportedClassVersionError:org/apache/lucene/

我正在运行lucene搜索代码,我在上面的一行中得到一个错误

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
我使用的是lucene 5.1.0版本

我已经从标准analyzer参数中删除了version.LUCENE_40,因此现在代码中没有错误,但是当我运行代码时,我得到一个错误:

主线程java.lang.UnsupportedClassVersionError:org/apache/lucene/analysis/Analyzer中出现异常:不支持的major.minor版本51.0 在java.lang.ClassLoader.defineClass1Native方法中 位于java.lang.ClassLoader.DefineClassLoader.java:643 位于java.security.SecureClassLoader.defineClassSecureClassLoader.java:142 位于java.net.URLClassLoader.defineClassURLClassLoader.java:277 在java.net.URLClassLoader.access$000URLClassLoader.java:73 在java.net.URLClassLoader$1.runURLClassLoader.java:212 位于java.security.AccessController.doPrivilegeEdNative方法 位于java.net.URLClassLoader.findClassURLClassLoader.java:205 位于java.lang.ClassLoader.LoadClassLoader.java:323 位于sun.misc.Launcher$AppClassLoader.loadClassLauncher.java:294 位于java.lang.ClassLoader.LoadClassLoader.java:268 找不到主类:HelloLucene。程序将退出。 代码如下:

LUCENE_40 cannot be resolved or is not a field
嗯,就像上面说的,版本。LUCENE_40。Lucene_4_0会,但这只会带来下一个问题:

不再接受版本参数。只需使用:

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);
    }
}
嗯,就像上面说的,版本。LUCENE_40。Lucene_4_0会,但这只会带来下一个问题:

不再接受版本参数。只需使用:

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

谢谢现在程序中甚至没有一个错误,但是当我执行代码时,我在线程main java.lang.UnsupportedClassVersionError:org/apache/lucene/analysis/Analyzer:Unsupported major.minor version 51.0thanks中得到异常。。。现在程序中甚至没有一个错误,但是当我执行代码时,我在线程main java.lang.UnsupportedClassVersionError:org/apache/lucene/analysis/Analyzer:Unsupported major.minor version 51.0中得到异常。您的代码对我来说是有效的。检查类路径,确保所有lucene JAR都是5.1版。如果您有任何旧的lucene JAR,请确保它们已从类路径中删除,并替换为最新版本。听起来5.1版可能有lucene core,但早期版本的分析器很常见。或者反之亦然。你的代码对我有用。检查类路径,确保所有lucene JAR都是5.1版。如果您有任何旧的lucene JAR,请确保它们已从类路径中删除,并替换为最新版本。听起来5.1版可能有lucene core,但早期版本的分析器很常见。或者反之亦然。