gpt4 book ai didi

java - Lucene Porter Stemmer 线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 12:57:02 27 4
gpt4 key购买 nike

快速提问,来自 Lucene 包(Java)线程的搬运工词干是安全的吗?

我猜答案是否定的,因为您需要设置当前字符串,调用 stem 方法然后获取当前 block 以获取词干词。但也许我错过了一些东西 - 是否有线程安全的方法可以从 Lucene 中提取单个单词或字符串?

有经验的人是否知道实例化一个 Porter Stemmer 实例然后在该词干实例上使用同步块(synchronized block)并执行 setCurrent("..."); stem(); get(); 是否更快例程还是为您要处理的每个字符串/文档创建一个新的搬运工词干分析器实例更快。

在这种情况下,我有许多 1000 个文档,每个文档都被一个线程池占用(即 1 个线程有一个文档)。

编辑仅供引用 - 使用模式示例:

import org.tartarus.snowball.ext.PorterStemmer;
...
private String stem(String word){
PorterStemmer stem = new PorterStemmer();
stem.setCurrent(word);
stem.stem();
return stem.getCurrent();
}

干杯!

最佳答案

查看文档,似乎 PorterStemmer 类是不可重入的,所以如果我是你,我会为每个线程构建一个实例。如果词干提取是您的程序所做的主要事情之一,并且它没有其他方法可以让您的 CPU 内核保持忙碌,那么同步块(synchronized block)似乎是个坏主意:程序将一直阻塞,等待词干分析器完成一份文件。我也不会为每个文档创建一个线程;每个内核一个线程的线程池可能是更明智的选择。

(没有示例代码,因为我什至无法从 API 文档中弄清楚它的用法。RTFS 来了解这个东西是如何工作的......)

关于java - Lucene Porter Stemmer 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com