A表有100W数据,现在要对某一字段进行模糊查询,并按相似度进行排序
比如有以下几条数据:
“北京新闻”
“最新新闻:北京XXXXXXX”
“上海新闻”
“新闻频道:北京台”
“北京市最新新闻”
输入“北京新闻”想得到的结果:
“北京新闻”
“新闻频道:北京台”
“北京市最新新闻”
“最新新闻:北京XXXXXXX”
“上海新闻”主要按相似度来排序,这怎么做?
比如有以下几条数据:
“北京新闻”
“最新新闻:北京XXXXXXX”
“上海新闻”
“新闻频道:北京台”
“北京市最新新闻”
输入“北京新闻”想得到的结果:
“北京新闻”
“新闻频道:北京台”
“北京市最新新闻”
“最新新闻:北京XXXXXXX”
“上海新闻”主要按相似度来排序,这怎么做?
--对你那个字段建立索引,然后select ..like..union all..拼!效率没问题的。
distance就是相似度。
你要想计算相似度就要用到“字符串相似度”算法,你去google一下 edit distance可以搜出来很多算法,比如最简单的 levenshtein distance. 相似度从0~1, 越接近1越相似。
把你这100w数据做成一个arraylist方式存储以你的“北京新闻”为对比字符串,while 循环你的arraylist, 分别检查每条记录那个词与“北京新闻”的distance(float型)结果是什么,存入相似度表,最后order by distancce就可以了。
你也不用弄数组,直接while(rs.next) 条条循环比较就可以。速度大概几秒。