开发者社区> 问答> 正文

如何提高查询关键词最多的文章的效率?

tagid tagname aid tagorder

  1 少林寺 1 0 
  2 方丈 1 1 
  3 永信 1 2 
  4 一行 1 3 
  5 执法 1 4 
  6 系统 1 5 
  7 僧众 1 6 
  8 精神 1 7 
  1 少林寺 2 0 
  3 永信 2 1 
  2 方丈 2 2 
  4 一行 2 3 

我有一张表如上,存了大约500万条文章的关键词。tagid代表的是关键词的唯一id,tagname就是关键词,aid,是文章的编号,tagorder是存储同一篇文章多个关键词的优先等级(0最高,1次之...以此类推)
我写了一个查询如下:
要查询的关键词为“方丈 少林寺 僧众”
程序如下:
`$tags=explode(' ',"方丈 少林寺 僧众");
$keywords="('".implode("','",$tags)."')";
$sql="SELECT aid,tagname FROM ".DB::table("foyuan_tag_article")."
WHERE tagname in $keywords
GROUP BY aid ORDER BY COUNT(aid) DESC,tagorder ASC,aid DESC LIMIT 0,10";`

这样能查处相关性最高的文章。
但效率很低下,大概需要10秒钟才能查询出来。
求优化方法。

展开
收起
落地花开啦 2016-02-11 15:05:58 2646 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    如果不使用全文索引,也可以使用以下方法,只是要动数据库的结构。
    关键字,每个一条
    26
    当前表中的tagname改成tg_id int null,并添加索引
    查询时先查询f_tagname表,得到tg_id,再使用tg_id在当前表中查询.
    mysql处理int比char快.

    2019-07-17 18:40:45
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《开放搜索查询分析服务架构分享》 立即下载
海量数据场景下的淘宝搜索智能——算法及实践 立即下载
海量数据场景下的淘宝搜索智能—算法及实践 立即下载

相关实验场景

更多