python - 比较大量二进制字符串

标签 python elasticsearch solr redis memcached

全部,

写信是为了看看是否有人对他们认为适用于以下场景的最佳技术有任何意见。无论是 python、solr、redis、memcache 等。

情况如下。

我有 1 亿多个二进制字符串,长度约为 1100 个字符... '0010100010101001010101011....'

您认为执行以下操作最合乎逻辑的方法是什么?

对于给定的相同字符数的字符串,找到最接近匹配项的最有效方法是什么?最接近的意思是在给定位置共享最多的 0 和 1。我相信汉明距离。

我的用例实际上涉及获取 10 万个左右的字符串并尝试在超过 1 亿个字符串的池中找到它们的最佳匹配。

有什么想法吗?无需使用特定的技术,最好使用相当常见的技术。

很想知道大家有什么想法。

谢谢, 骨头

最佳答案

为此,您可以使用 numpy、R 或 MATLAB,或任何其他适用于大型矩阵的工具:

假设您有一个 NxM 矩阵 A,其中 N 是 len(string),M 是字符串的数量。并假设您有一个要匹配的字符串 S。你可以:

  1. 从 A 中减去 S 的数组版本
  2. 对(1)的结果取所有元素的绝对值
  3. 将(2)的结果沿N轴求和
  4. 对 (3) 的结果进行排序,以找到与 S 距离最短的字符串的索引。

关于python - 比较大量二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558975/

相关文章:

python - 使用 openpyxl 访问具有特定范围的命名范围

python - 在 Bokeh 面积图的 x 轴上显示日期

elasticsearch - Elasticsearch 中的嵌套文档

python - 使用 groupby 键作为 pandas dataframe 的索引

Python - 根据条件找到最大值

search - 如何强制对Elasticsearch “terms”查询进行not_analyzed

c# - 将JArray转换为Dynamic [],以便NEST的IndexMany可以工作

java - Solr 自动提交不起作用

Apache Solr 基于分数和 fieldn 值进行排序

solr - 如何在不重新索引的情况下将数据移动到Solr生产实例?