我有一个字符串字典(700万字符串)。我有一个列表查询/字符串(3000万字符串)我想对字典运行。
我希望获得给定查询的所有字典匹配编辑距离1或2.
目前我正在使用solr来做到这一点。我已经在solr中索引了700万个字符串(2GB索引大小)。我正在使用strdist()函数来获取匹配项。但是这种方法对于每个查询平均需要300到500毫秒。完成3000万次查询需要104天。
我尝试了solr MMapDirectory方法,但我没有发现任何性能差异。我尝试过增加documentCache,queryResultCache,但它并没有提高性能。
我可以使用solr或除solr之外的任何其他方法将此性能提高到1 ms吗?有没有比solr更好的选择?
答案 0 :(得分:0)
请尝试使用fuzzy search support。它使用编辑距离作为底层比较,并支持最多2的编辑距离(这应该足以满足您的需要)。
另一种可能性是创建一个更简单的查询,首先对其进行过滤,但该查询的确切位置取决于您的输入和匹配数据(对于某些用例,语音搜索可以正常工作作为第一步)。 p>