gpt4 book ai didi

java - 在 arraylist 中查找字符串的松散匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:08 26 4
gpt4 key购买 nike

我有一个巨大的数组列表,其中包含 1000 个条目,其中一个条目是“world”。而且,我有一个词“大世界”。我想在 arraylist 中将单词“big world”与“world”相匹配。

最经济有效的方法是什么?我不能使用数组列表的 .contains 方法,如果我遍历所有 1000 个条目并按模式匹配它们,它的性能将非常昂贵。我为此使用 Java。

你能告诉我最好的方法是什么吗?

干杯,J

最佳答案

您可以将 ArrayList 的每个元素拆分成单词,并在找到其中一个时立即停止。

根据你的个人资料,我想你是用 Java 开发的,而使用 Lucene 你会很容易地做类似的事情

public class NodesAnalyzer extends Analyzer {   
public TokenStream tokenStream(String fieldName, Reader reader) {

Tokenizer tokenizer = new StandardTokenizer(reader)
TokenFilter lowerCaseFilter = new LowerCaseFilter(tokenizer)
TokenFilter stopFilter = new StopFilter(lowerCaseFilter, Data.stopWords.collect{ it.text } as String[])
SnowballFilter snowballFilter = new SnowballFilter(stopFilter, new org.tartarus.snowball.ext.ItalianStemmer())

return snowballFilter
}
}

Analyzer analyzer = new NodesAnalyzer()

TokenStream ts = analyzer.tokenStream(null, new StringReader(str));
Token token = ts.next()

while (token != null) {
String cur = token.term()
token = ts.next();
}

注意:这是我从个人项目中复制的 Groovy 代码,因此您必须将诸如 Data.stopWords.collect{ it.text } as String[] 之类的内容转换为纯 Java

关于java - 在 arraylist 中查找字符串的松散匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129796/

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