我一方面有很多文本文档,另一方面有很多关键字(字符串)。现在我很感兴趣,这些关键字中包含哪些关键字。
目前我正在使用一个怪异的自动生成的正则表达式:
keywords = %w(Key1, Key2, Key3)
regx = Regexp.new('\b(' + keywords.join('|') + ')\b','i')
documents.each |d|
d.scan(regx)
end
这对于几百个关键字的列表非常有用,但现在我使用了大约50000个关键字并且它的速度太慢了。
使用ruby进行此类操作有更好的方法吗?
修改
答案 0 :(得分:1)
将关键字列表转换为哈希:
h = {
"foo" => true,
"bar" => true,
...
"baz" => true,
}
然后,按块(以空格分隔)读取文档块:
File.new("/path/to/file").each(" ") do
|ws| ws.scan(/[\w']+/) do
|w| if h.key?(w)
# Found.
end
end
end
答案 1 :(得分:0)
我会开始使用gem:phrasie 这会在(每个)文档中为您提供一系列单词, 您可以轻松地与关键字匹配。