Вы можете разбить каждый отдельный элемент 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