我使用Lucene 5.0,我想添加我自己的停用词。
CharArraySet stopSet = StandardAnalyzer.STOP_WORDS_SET;
stopSet.add("i");
stopSet.add("m");
stopSet.add("t");
stopSet.add("can");
stopSet.add("said");
tokenStream = new StopFilter(tokenStream, stopSet);这是在how to add custom stop words using lucene in java中发现的。但它在我的工作中不起作用。问题如下。
Exception in thread "main" java.lang.UnsupportedOperationException
at org.apache.lucene.analysis.util.CharArrayMap$UnmodifiableCharArrayMap.put(CharArrayMap.java:606)
at org.apache.lucene.analysis.util.CharArraySet.add(CharArraySet.java:115)
at Main.main(Main.java:23)我怎么才能解决它。非常感谢。
发布于 2015-03-07 08:21:15
StandardAnalyzer的停止集是不可修改的集。所以你不能修改它。不过,很容易处理,只需复制它:
CharArraySet stopSet = CharArraySet.Copy(StandardAnalyzer.STOP_WORDS_SET);
stopSet.add("i");
//etc.然后,您可以将该停止集传递到StandardAnalyzer constructor中,或者使用它创建您自己的StopFilter。
你所指的答案在这方面是不正确的。它在Lucene 3.6中也是不可修改的(至少早在2.9)。
等等..。答案是我写的。尴尬
https://stackoverflow.com/questions/28899368
复制相似问题