考虑数据量比较多的情况下,目前假设千万级别,如何从一张表里面根据文章如何根据现有的文章标题查找相似度最高的10篇文章,比如,现有的标题:我的绯闻非人女友,那应该从表里面找出类似"我的绯闻野狗xx","绯闻飞吻飞蚊"等等。在网上找到一个类似的解决方案,思路大概是:将标题组成词,再like模糊查询,比如:"我的绯闻女友",先用脚本处理成"我的","的绯",“绯闻”,“闻女”,“女友”这样两个词组成的词,然后再计算该词在该标题出现的次数,设置为权重$im,最后sql语句时select(titlelike"%我的%")*$im,(titlelike"的我")..fromarticlewhere..,用这种词语模糊查询来查询标题相似度接近的文章,不知道这种方式靠不靠谱?
2 回答
弑天下
TA贡献1818条经验 获得超8个赞
1.首先一般来说,是先检索标签、标题或者做索引,用mysql做模糊搜索。但是这些都是在数据量比较少的前提下2.涉及到千万级别,一般是采用sphinx等搜索的解决方案来解决。技术的关键词是全文索引,具体实例就不说了,举一个栗子:抛弃mysql模糊查询,使用sphinx做专业索引
隔江千里
TA贡献1906条经验 获得超10个赞
按照你网上找的方法,理论上可以实现,但是千万级别的数据,即使用了全文搜索难免也会担忧性能。如果有条件,你可以找个智能取词的库。实现的过程你可以先用PHP将标题切割成数组,然后用如下SQL。$list=['我的','的绯','绯闻',...];foreach($listas&$v){$v="(titlelike'%$v%')";}$where=implode('or',$list);$order=implode('+',$list);$sql="select*fromtbwhere$whereorderby$orderlimit10";...
添加回答
举报
0/150
提交
取消