已经用MYSQL 的 UNION 实现了一个,但是效率太差,请教论坛上的高人有没有更好的方法。mysqlphp模糊搜索排序

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2013-02-23 10:18:55 编辑
      

  2.   

    phpcms_ask表: askid  catid  title  tags  reward  userid  username  addtime  endtime  status  flag  answercount  anonymity  hits  ischeck
    phpcms_ask_posts表:pid  askid  isask  message  addtime  reply  rptime  candidate  optimal  reversion  userid  status  anonymity  username
      

  3.   

    既然你不需要计算出现的次数,那么合起来不是更好
    SELECT a.`askid`,a.`catid`,a.`title`,a.`status`,a.`addtime`,a.`reward`,a.`answercount`,b.`message` 
     FROM `phpcms_ask` a LEFT JOIN `phpcms_ask_posts` b ON a.`askid`=b.`askid`
     WHERE (a.status=3 OR a.status=5) AND b.`isask`=1 AND (LOCATE('中国',a.`title`)>0 OR LOCATE('北京',a.`title`)>0 OR LOCATE('天安门',a.`title`)>0)
      

  4.   

    若要计算匹配度,也只需
    select sign(LOCATE('中国',a.`title`))+sign(LOCATE('北京',a.`title`))+sign(LOCATE('天安门',a.`title`)) as 匹配数 from ...