第一个问题:if作用不大,果count不是数组的化,会出错的第二:
,10 * sum(k.weight) / $num_keywords这个应是计算一新闻所有关键词的平均权值吧,方便排序吧比如:10\9\8,平均起来就是2.7,与10一起就是27

解决方案 »

  1.   

    补允下第一个问题
    有$i来主要是拼接你的SQL语句的。如果i为0也就是第一个的时候前面就不用加or,当有多个的时候就用or来连接你的SQL语句。
    第二个主要是为了排序,算出最符合你的查询的排前面。。
      

  2.   

    我也补充下:
    第一个问题:if($i)是为了区别与第一个数组元素,从而能到到准确的 $keywords_string 值第二个问题:一楼和二搂已经说的很清楚了
      

  3.   

    还是不太懂,
    如果用if($i)判断关键字的条件关系,那($i)到底什么情况下会执行else?我看不明白,如果执行else又代表什么呢?还有10 * sum(k.weight) / $num_keywords,如果只是为了比较,那么10 *的过程没有必要把,
    谢谢
      

  4.   

    判断:
     if ($i) 
          { 
            $keywords_string .= "or k.keyword = '".$keywords[$i]."' "; 
          } 
          else 
          { 
            $keywords_string .= "k.keyword = '".$keywords[$i]."' "; 
          } 
      SQL语句
     $query = "select s.id, 
                        s.headline, 
                        10 * sum(k.weight) / $num_keywords as score  ------------A---------- 
                  from stories s, keywords k 
                  where s.id = k.story 
                        and ($keywords_string) 
                        and published is not null 
                  group by s.id, s.headline 
                  order by score desc, s.id desc"; 你想想 比如 当$keywords_string只有一个值的时候,
    前面加OR的话,该SQL语句就会出错拉(如红色字体   就变成  and(or k.keyword = '".$keywords[$i]."' ))
    所以要判断$i的