Lucene 荧光笔 TokenStream 异常
Lucene Highlighter TokenStream exception
我对 Lucene 荧光笔有疑问。我在 Whosebug 和其他网站上找到了一些代码,但这段代码在我的程序中不起作用。这是我尝试搜索和突出显示单词的方法,但是当我搜索某些内容时,程序会给我异常。
方法:
private static void useIndex(String query, String field, String option)
throws ParseException, CorruptIndexException, IOException, InvalidTokenOffsetsException {
// StandardAnalyzer analyzer = new StandardAnalyzer();
Query q = new QueryParser(field, analyzer).parse(query);
int hitsPerPage = 5;
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
SimpleHTMLFormatter htmlFormatter = new SimpleHTMLFormatter();
Highlighter highlighter = new Highlighter(htmlFormatter, new QueryScorer(q));
// display results
System.out.println("Found " + hits.length + " hits for " + query);
for (int i = 0; i < hits.length; ++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
String docURL = d.get("url");
String docContent = d.get("content");
TokenStream tokenStream = TokenSources.getAnyTokenStream(reader, docId, "content", analyzer);
TextFragment[] frag = highlighter.getBestTextFragments(tokenStream, docContent, false, 4);
String docFrag="";
if ((frag[0] != null) && (frag[0].getScore() > 0)) {
docFrag=frag[0].toString();
}
model.addRow(new Object[] { docURL, findSilimar(docId), docFrag });
}
reader.close();
}
异常:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.index.memory.MemoryIndex
我什么都试过了,但我不知道哪里出了问题。
P.S。对不起我的英语。
A NoClassDefFoundError
表示 class 不在您的 class 路径中,因此您应该弄清楚需要添加什么 jar 才能获得它。 MemoryIndex
位于:lucene-memory-x.x.x.jar
顺便说一句,乍一看,您提供的代码中似乎不会抛出此异常。
我对 Lucene 荧光笔有疑问。我在 Whosebug 和其他网站上找到了一些代码,但这段代码在我的程序中不起作用。这是我尝试搜索和突出显示单词的方法,但是当我搜索某些内容时,程序会给我异常。
方法:
private static void useIndex(String query, String field, String option)
throws ParseException, CorruptIndexException, IOException, InvalidTokenOffsetsException {
// StandardAnalyzer analyzer = new StandardAnalyzer();
Query q = new QueryParser(field, analyzer).parse(query);
int hitsPerPage = 5;
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
SimpleHTMLFormatter htmlFormatter = new SimpleHTMLFormatter();
Highlighter highlighter = new Highlighter(htmlFormatter, new QueryScorer(q));
// display results
System.out.println("Found " + hits.length + " hits for " + query);
for (int i = 0; i < hits.length; ++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
String docURL = d.get("url");
String docContent = d.get("content");
TokenStream tokenStream = TokenSources.getAnyTokenStream(reader, docId, "content", analyzer);
TextFragment[] frag = highlighter.getBestTextFragments(tokenStream, docContent, false, 4);
String docFrag="";
if ((frag[0] != null) && (frag[0].getScore() > 0)) {
docFrag=frag[0].toString();
}
model.addRow(new Object[] { docURL, findSilimar(docId), docFrag });
}
reader.close();
}
异常:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.index.memory.MemoryIndex
我什么都试过了,但我不知道哪里出了问题。
P.S。对不起我的英语。
A NoClassDefFoundError
表示 class 不在您的 class 路径中,因此您应该弄清楚需要添加什么 jar 才能获得它。 MemoryIndex
位于:lucene-memory-x.x.x.jar
顺便说一句,乍一看,您提供的代码中似乎不会抛出此异常。