有序顺序文本匹配

时间:2016-08-02 14:29:09

标签: machine-learning pattern-matching string-matching

我希望匹配字符串并按以下方式获得分数,

   string 1: 4556677, string 2: 2556677, score: 0
   string 1: 123345873009, string 2: 123345873112, score: 9
   string 1: 22334567, string 2: 22334500, score: 6

所以分数从左到右表示共同的前n位

我有一个100K字符串1和30M字符串2的列表,我想过滤所有对(字符串1和2),得分大于'x'。

是否有可用于执行此任务的算法而不是残酷的力顺序匹配?我有表存储在apache hive / hbase中,并希望在spark或java mapreduce中实现该方法。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我得出结论,你的“得分”代表字符串不同的最左边的字符位置。

没关系“mapreduce”,简单的Jane Java可以很容易地做到这一点。

**

  

public int score(String string1,String string2){
  char sbuf1 [] = string1.toCharArray();
  char sbuf2 [] = string2.toCharArray();

     

int complen = sbuf1.length;

     

if(sbuf2.length< complen){
  complen = sbuf2.length;
    }
  对于(   int i = 0;我< complen;我++){
  if(sbuf1 [i]!=   sbuf2 [i]){
  返回   I;
   }
  }
   返回-1; //   表示在一根弦用尽之前没有检测到不匹配   }

**