比如:
字符串s1='星手机'
字符串s2='美三星'
字符数组 s=['三星手机'、'诺基亚手机'、...],有将近1万条数据。
我想到的近似匹配方法是 最小编辑距离, 但是如何找出字符数组中最近似字符串的数据呢?难道要一个一个算,找最近似的?有没有什么好方法?谢谢大家了。
刚才尝试了下,一条一条比,速度到时可以接受,几乎将近1s一个吧。但是还是期待有好方法?
比如:
字符串s1='星手机'
字符串s2='美三星'
字符数组 s=['三星手机'、'诺基亚手机'、...],有将近1万条数据。
我想到的近似匹配方法是 最小编辑距离, 但是如何找出字符数组中最近似字符串的数据呢?难道要一个一个算,找最近似的?有没有什么好方法?谢谢大家了。
刚才尝试了下,一条一条比,速度到时可以接受,几乎将近1s一个吧。但是还是期待有好方法?
这个算法貌似有点坑
首先把输入分开为词组,这里就很坑了。。。
然后 每次对比用正则之类的语句 对比 每有一个词 一个记号变量+1 ,之后根据记号变量排列出 搜索结果。。
前面提到的BK-tree非常适合解决题主的问题.
补两篇文章供参考:
- http://coolchar.com/algorithm/2014/09/21/BK%20Tree.html
- http://www.matrix67.com/blog/archives/333
这个 好像是搜索引擎里面的东西 先对 1万条数据分词,然后建倒排索引,查询的时候,先对字符串拆分,然后可以依据多路合并进行评分;