you should create a database to record searched keywords.

解决方案 »

  1.   

    当然首先是建立一个供检索的关键词与网页标题库。
    当你输入一个关键词时,把该关键词拿去库里作模糊查询,like *你的关键词* ,这样子
    然后判断该查询返回的结果条数,如果少于一个标准值,则说明对该关键词进行拆词(至于拆词,是另外一个专门的问题了),再把拆词后的部分拿去查询。比如“中国人民”,假设它真的查不到或结果很秒,则拆成“中国”、“人民”两部分,先“中国”AND “人民”,再少的话,再查“中国”OR “人民”…………
      

  2.   

    楼上的这样不行把,google 应该有自己的词库,例如输入saarch会提示你是不是再找 search只要输入的词在词库有,那就提出来就可以了
      

  3.   

    我得想法是这样的:首先有一个该语言的词库系统
    然后针对该语言的特点(特别是与输入法相关的特点)进行词之间的匹配
    匹配技术是关键,这个对各民族语言都有所区别
    例如中文需要对“拼音”“象形”匹配
    英文需要对近似拼写匹配当然,因为google硬件很强大,完全可以用手工制作匹配表的方法而免去匹配技术的研究
    金山词霸(iciba.com)也有类似功能,它具体怎么做不太清楚
      

  4.   

    反了!
    不是“如何才能根据你输入的关键字,求出与它相似的另一个字符串呢?”
    而是“如何才能求出与你输入的关键字相似的已知关键字呢?”当问题变成后者的时候,你就可以用similar_text函数了
    int similar_text ( string first, string second [, float &percent] )
    返回first在second存在的字符个数,percent为表示相似度的值
    echo similar_text ('程序', '程式', $percent);//2
    echo $percent;//50对于中文,可能用汉语拼音要更好些
      

  5.   

    楼主走了弯路,这个问题你必须记住我们伟大领袖的语录:人民战争为人民。具体怎么做呢,计算机是个傻瓜,人民才是智慧的代表,当某个人搜索你的数据的时候,他输错了,比如,把search 输入成saarch,自然他得不到任何结果,那么他会检查他的关键词,然后他会发现他输入错了,然后他就会重新输入,自然他得到了结果.
    在这个过程中,你的笨蛋计算机不会去检查他输的关键词是否正确,但你的笨蛋计算机通过下列规则学会一件事:   当同一个用户输入某个关键字得不到任何结果或得到很少的结果,
       他切换另外一个词,得到比较多的结果所以你的笨蛋计算机得出的结论是,某些人很容易把search输入成saarch,
    你的笨蛋计算机把这个纪录在他的数据库中,当下次另外一个用户输入saarch的时候
    你的笨蛋计算机居然聪明地说: Do you mean "search".现在你说说,谁是笨蛋?谁是聪明蛋?
      

  6.   

    现在我是这样来处理的:
    将用户的搜索记录关键字以及搜索到的结果数到数据库中。
    当用户下次搜索没有返回结果时,则去寻找以前的搜索记录,从中找出相似的关键字来。例如:
    <?php
    ...
    $sql = "SELECT keywords FROM searchlog WHERE ...";
    ...
    while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
      similar_text($sourceStr, $descStr, $similarity);
      if (intval($similarity) > 90){
        //如果相似度超过90%,则认为它是相似的关键字,退出循环。
        $similarKeywords = $row['keywords'];
        continue;
      }
    }
    ...
    if (! empty($similarKeywords)) {
      echo 'Did you mean:' . $similarKeywords;
    }
    ...
    ?>不知道大家认为这样怎样?如果保存的记录太多,会不会很影响效率?
      

  7.   

    if (intval($similarity) > 90){
        //如果相似度超过90%,则认为它是相似的关键字,退出循环。
        $similarKeywords = $row['keywords'];
        continue;
      }应该是
    if (intval($similarity) > 90){
        //如果相似度超过90%,则认为它是相似的关键字,退出循环。
        $similarKeywords = $row['keywords'];
        break;
      }
      

  8.   

    楼主走了弯路,这个问题你必须记住我们伟大领袖的语录:人民战争为人民。具体怎么做呢,计算机是个傻瓜,人民才是智慧的代表,当某个人搜索你的数据的时候,他输错了,比如,把search 输入成saarch,自然他得不到任何结果,那么他会检查他的关键词,然后他会发现他输入错了,然后他就会重新输入,自然他得到了结果............
        这位兄台好比如啊,这样子的想法更容易编程些!