Lucene Porter Stemmer Тема безопасна? - PullRequest
2 голосов
/ 20 сентября 2011

Быстрый вопрос, безопасен ли поток портера из пакетов 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

1 Ответ

3 голосов
/ 20 сентября 2011

Глядя на документы, кажется, что класс PorterStemmer не является реентерабельным, поэтому я бы создал экземпляр для каждого потока на вашем месте. Если остановка является одной из основных функций, которые выполняет ваша программа, и у нее нет другого способа поддерживать занятость ядер вашего процессора, то синхронизированный блок кажется плохой идеей: программа будет блокироваться все время, ожидая завершения работы модуля. один документ Я бы не стал создавать отдельную тему для каждого документа; разумным выбором может быть пул потоков с одним потоком на ядро.

(Нет примера кода, так как я даже не смог выяснить использование из документации API. RTFS, чтобы выяснить, как эта штука работает ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...