我有10,000,000个字符串的列表,每个字符串都是一个项目的名称。 3到5个单词,最多80个字符。
然后我有一个5,000个字符串列表要匹配。意思是,对于5,000个潜在匹配规则中的每一个,我需要确定它匹配的10,000,000个字符串中有多少个。
到目前为止,我已经使用类似下面的内容迭代成对:
def contains_word_fast2(check):
counter = 0
try:
for item in my_list_of_10mm_items:
if " "+check+" " in item or item.startswith(check + " ") \
or item.endswith(" " +check):
counter += 1
except:
return 0
return counter
我在10,000,000个字符串的子集上工作得很好,但我不知道如何扩展算法。使用概率数据结构的任何建议?我知道MinHash或BloomFilter可能有一些潜力,但我无法理解它将如何应用于这个问题。