我的文字大约有300到500字。此外,我有大约200k关键字,我想知道每个关键字是否包含在文本中。一个String包含的ist很慢,有没有办法预处理String?
我想过使用SuffixTree,但我不确定这是最好的选择。
此外,这项任务有没有好的图书馆?例如,semanticdiscoverytoolkit有一个后缀树实现,但是在添加字符串后,我无法弄清楚如果字符串包含在树中,如何查找。
问候,
尼科
答案 0 :(得分:2)
你可以试试rabin-karp字符串搜索算法。因为你主要进行散列(整数)比较,所以性能比字符串比较要好得多。
作为类比,滚动哈希就像一个沿着文本滚动的“滑动窗口”。哈希比较是使用“滑动窗口”中子字符串的哈希对照关键字的哈希来完成的。
答案 1 :(得分:0)
您可以使用StringTokenizer获取每个单词,然后填充您之后检查的hashmap。这需要仅通过每个列表一次。因此,查找时间应非常快,这对于您拥有的关键字数量非常重要。
将这种方法与Lucene这样的方法进行分析可能是值得的。