java - Lucene荧光笔TokenStream异常

标签 java lucene lucene-highlighter

我在使用 Lucene 荧光笔时遇到问题。我在 Stackoverflow 和其他网站上找到了一些代码,但该代码在我的程序中不起作用。这是我尝试搜索并突出显示单词的方法,但是当我搜索某些内容时,程序给了我异常。

方法:

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):

    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

我尝试了一切,但我不知道出了什么问题。

附注对不起我的英语。

最佳答案

NoClassDefFoundError 意味着该类不在您的类路径中,因此您应该弄清楚需要添加什么 jar 来获取它。 MemoryIndex 位于:lucene-memory-x.x.x.jar

顺便说一下,乍一看,您提供的代码中似乎不会抛出此异常。

关于java - Lucene荧光笔TokenStream异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790062/

相关文章:

ios - 在没有数据库的情况下只使用 Lucene 索引是否可取?

Lucene 实体提取

java - 如何放大图像以匹配屏幕尺寸?

java - Android 单元测试不会使用正确的应用程序类

java - 将字节数组放入 JSON,反之亦然

java - 存储二进制代码的字符串数组的内存大小

java - 在 Apache lucene 中导入 org.apache.lucene.analysis.SimpleAnalyzer 符号未找到错误

lucene - solr搜索结果中字段值为1或true

java - Solr WordDelimiterFilter + Lucene 荧光笔

java - Lucene荧光笔