我在做那个Lucene 高亮显示时我开始用的英文的就运行没错 ,但我一改成
private   Analyzer analyzer=new MMAnalyzer();包我都加了 但是它抛了这个错误Exception in thread "main" java.lang.NoSuchMethodError: org.apache.lucene.analysis.StopFilter.<init>(Lorg/apache/lucene/analysis/TokenStream;Ljava/util/Set;Z)、希望各位大哥们给个解决方案先谢过了

解决方案 »

  1.   

    应该你的Lucene包的版本问题!版本不一致,过高或者过低!
    你可以去下载个例子,里面包括你所需要的功能.http://download.csdn.net/source/2766012
      

  2.   

    确实有可能是jar包的问题 Lucene 每个版本变化很大
    MMAnalyzer() 这个对中文分词支持也不行 只支持单字分词个人建议 你去开源网下最新的 Lucene 
    还有 推荐下 IKAnalyzer 还不错 挺好用的
      

  3.   

    对了 一楼 二楼 三楼 的你知道那个Compass是怎么用注解的吗?我那还有个问题  先谢过
      

  4.   


    ublic void indexSearch(String searchType, String searchKey) {
    Directory directory = null;
    IndexSearcher searcher = null;
    // 搜索开始时间
    Date beginTime = new Date();
    try {
    directory = FSDirectory.open(new File(INDEX_STORE_PATH));
    searcher = new IndexSearcher(directory);
    searcher.setSimilarity(new IKSimilarity());
    Query query = IKQueryParser.parse(searchType, searchKey);
    System.out.println("查询条件为:" + query);
    TopDocs topDocs = searcher.search(query, searcher.maxDoc());
    System.out.println("检索到总数:" + topDocs.totalHits);
    ScoreDoc[] scoreDocs = topDocs.scoreDocs;

    SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<FONT COLOR='RED'>", "</FONT>");
    Highlighter highlighter = new Highlighter(simpleHtmlFormatter,new QueryScorer(query));  
    highlighter.setTextFragmenter(new SimpleFragmenter(100));

    Analyzer analyzer = new IKAnalyzer();
    for (int i = 0; i < scoreDocs.length; i++) {
    Document targetDoc = searcher.doc(scoreDocs[i].doc);
    TokenStream tokenStream = analyzer.tokenStream("",new StringReader(targetDoc.get("content")));  
    String str = highlighter.getBestFragment(tokenStream, targetDoc.get("content"));  
    System.out.println(str);  
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (searcher != null) {
    try {
    searcher.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if (directory != null) {
    try {
    directory.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    // 搜索完成时间
    Date endTime = new Date();
    // 搜索所耗时间
    long timeOfSearch = endTime.getTime() - beginTime.getTime();
    System.out
    .println("The time For indexsearch is " + timeOfSearch + " ms");
    }
    }我用的 Lucene(3.0.2) 和 IKAnalyzer(3.2.3) 都是最新的 不知道你的版本是什么 你看看我的代码
    我现在还在发愁数据量太大 和 增量索引的问题呢
      

  5.   

    回复(北洋之风)我的是 Lucene(2.9) 和 MMAnalyzer(1.5)的   你觉得代码多你用那个Compass不就少写吗 ?它里面的索引库也应该好些吧
      

  6.   

    没用compass 我们主要是读本地文件 数据库里面存的是文件路径 没办法实例化封装
    不过你贴的那个异常 确实很可能是jar包的问题 你可以把jar打开看下是否有那个类那个方法