Java LUCENE_40无法解析或不是字段
我正在运行lucene搜索代码,我在上面的一行中得到一个错误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/
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,但早期版本的分析器很常见。或者反之亦然。