【发布时间】:2021-10-02 04:54:10
【问题描述】:
我发现有很多实现在 2 个字符串之间计算 Levenshtein,但是有没有任何实现可以使用 Levenshtein 距离(最大 2)为一个给定字符串生成所有变体。
原因是,我正在使用 ElasticSearch 执行一些模糊搜索,但是由于我有大量查询,我遇到了一些性能问题,因为 ELK 每次都会计算这些可能性,我想将这些值存储一次。
【问题讨论】:
-
您是否打算通过插入诸如
?之类的通配符或所有字符来生成字符串?因为后者会产生大量的字符串。 -
“可以为一个给定的字符串生成所有变体 [...]” 到底是什么意思?为给定字符串生成最大距离为 2 的所有字符串?那将是海量的数据。考虑“单词”,仅仅替换一个字符给你100个新单词,添加一个字符给你130个新单词,替换2个字符给你大约3700个新单词,替换一个和添加一个给你??新词,...都在 Levenshtein 距离 2 ...
-
是的,就像@derpirscher 提到的那样,我想“为给定字符串生成最大距离为 2 的所有字符串”;我知道这有很多可能性,但这就是模糊在 ElasticSeach 中的工作方式,但是我不想让 ELK 做模糊,而是想预先计算所有可能性,并要求 ELK 与所有预先计算的可能性做一个简单的比较.
-
您的意思是您想向 Elasticsearch 发送数百万个搜索词(如果您在早期以某种方式进一步过滤它们以免超出内存限制),而不是使用 Elasticsearch 的内置功能?得到什么?
标签: c# algorithm levenshtein-distance