首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lucene索引文本文档时出现异常,使用SnowballAnalyzer进行清理

使用Lucene索引文本文档时出现异常,使用SnowballAnalyzer进行清理
EN

Stack Overflow用户
提问于 2010-04-28 15:27:53
回答 1查看 1.1K关注 0票数 1

我正在使用Lucene对文档进行索引,并尝试将SnowballAnalyzer应用于标点符号和文本中的停用词删除。我一直收到以下错误:(

IllegalAccessError:尝试从类org.apache.lucene.analysis.snowball.SnowballAnalyzer访问方法IllegalAccessError

这是代码,非常感谢大家的帮助!我是个新手..

公共类索引器{

代码语言:javascript
复制
private Indexer(){};

private String[] stopWords = {....};

private String indexName;
private IndexWriter iWriter;
private static String FILES_TO_INDEX = "/Users/ssi/forindexing";

public static void main(String[] args) throws   Exception {
  Indexer m = new Indexer();
  m.index("./newindex");
}


public void index(String indexName) throws Exception {
  this.indexName = indexName;

  final File docDir = new File(FILES_TO_INDEX); 

  if(!docDir.exists() || !docDir.canRead()){
        System.err.println("Something wrong... " + docDir.getPath());
        System.exit(1);
    }

    Date start = new Date();


        PerFieldAnalyzerWrapper analyzers = new PerFieldAnalyzerWrapper(new SimpleAnalyzer());          
        analyzers.addAnalyzer("text", new SnowballAnalyzer("English", stopWords));
        Directory directory = FSDirectory.open(new File(this.indexName));
        IndexWriter.MaxFieldLength maxLength = IndexWriter.MaxFieldLength.UNLIMITED;

        iWriter = new IndexWriter(directory, analyzers, true, maxLength);

        System.out.println("Indexing to dir..........." + indexName);

        if(docDir.isDirectory()){
            File[] files = docDir.listFiles();
            if(files != null){
                for (int i = 0; i < files.length; i++) {
                    try {
                              indexDocument(files[i]);
                          }catch (FileNotFoundException fnfe){
                            fnfe.printStackTrace();
                        }
            }

        }
        }


System.out.println("Optimizing...... ");
iWriter.optimize();
iWriter.close();
Date end = new Date();
System.out.println("Time to index was" + (end.getTime()-start.getTime()) + "miliseconds");  

}

私有空indexDocument(文件someDoc)引发IOException {

代码语言:javascript
复制
Document doc = new Document();
Field name = new Field("name", someDoc.getName(), Field.Store.YES, Field.Index.ANALYZED);
Field text = new Field("text",  new FileReader(someDoc), Field.TermVector.WITH_POSITIONS_OFFSETS);
doc.add(name);
doc.add(text);


iWriter.addDocument(doc);

}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-28 16:05:55

这说明一个Lucene类与另一个Lucene类不一致--一个正在访问另一个无法访问的成员,这强烈地表明在您的类路径中有两个不同且不兼容的Lucene版本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2727515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档