2015-03-06 6 views
0

Я использую Lucene 5.0, и я хочу добавить свои собственные временные слова.Lucene 5.0 UnsupportedOperationException

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) 

Как я могу его решить. Огромное спасибо.

ответ

1

Набор стопорных средств StandardAnalyzer - это немодифицируемый набор. Поэтому вы не можете его изменить. Легко достаточно, чтобы иметь дело с тем, хотя, просто скопируйте его:

CharArraySet stopSet = CharArraySet.Copy(StandardAnalyzer.STOP_WORDS_SET); 
stopSet.add("i"); 
//etc. 

Вы можете затем передать этот stopset в StandardAnalyzer constructor, или создать свой собственный StopFilter с ним.

Ответ, который вы имеете в виду, является неправильным на этом фронте. Он также был немодифицирован в Lucene 3.6 (и, по крайней мере, уже в 2.9).

Подождите ... Я написал этот ответ. Embarrassing

+0

Спасибо. Другое дело, мне нужно прочитать большой файл json. Не могли бы вы рекомендовать способ сделать это. –

+0

Это правильное решение проблемы. Спасибо. @PatrickWAN, пожалуйста, примите этот ответ, если он решит вашу проблему – ggeo

Смежные вопросы