Быстрый вопрос, безопасен ли поток портера из пакетов Lucene (Java)?
Я предполагаю, что ответ «нет», так как вам нужно установить текущую строку, вызвать метод stem, затем получить текущий блок, чтобы получить слово «stemmed». Но, возможно, я что-то упускаю - есть ли потокобезопасный способ сделать вывод одного слова или строки из Lucene?
Знает ли кто-нибудь из опыта, быстрее ли создавать экземпляр одного экземпляра Porter Stemmer, а затем использовать синхронизированный блок для этого экземпляра stemmer и выполнять процедуру setCurrent("..."); stem(); get();
, или это просто быстрее создать новый экземпляр Steter Stemer для каждой строки? / документ, который вы хотите обработать.
В этом случае у меня есть много тысяч документов, каждый из которых занят пулом потоков (т. Е. 1 поток имеет один документ).
Редактировать FYI - Пример использования шаблона:
import org.tartarus.snowball.ext.PorterStemmer;
...
private String stem(String word){
PorterStemmer stem = new PorterStemmer();
stem.setCurrent(word);
stem.stem();
return stem.getCurrent();
}
Ура! * * 1013