本帖最后由 asasdisdd 于 2011-12-07 14:18:37 编辑

解决方案 »

  1.   

    可以肯定这个功能不会是用 sql 实现的啦,最原始的思路就是“全文检索”,建议楼主去研究一下 lucene 或 sphinx。当然,百度知道这种商用系统可能在全文检索的基础上还会有更高级的匹配算法。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  2.   

    看需求了。一般不复杂。
    你看下这里分词
    http://www.ftphp.com/scws/内容要先分好词。像西安天朗国旅公司简介会分成:
    西安 天朗 国旅 公司简介
    然后你再去匹配组合数据。
    具体算法权重按你系统需求去定。至于数据是怎样存储你要规划好。我现在系统就这么做。数据暂时不大。效率还可以。

      

  3.   

    LIKE就很简单啊
    不能实现吗
      

  4.   

    link不能啊,我是需要匹配的相同的文字最多的,如果所有文字拆分用and的匹配的话,那结果可能少的可怜,甚至都没有,,
    如果用or的话,结果太多,无法匹配到需要的.......
      

  5.   

    相同汉字? 单个字? 那样没意义。
    要做好始终是要词库分词的。没C++。也有纯php版的。要速度就弄php c扩展版的。
      

  6.   

    如果不是很特定需求的话,
    一般都可以用google custom searchhttp://www.google.com/cse/
      

  7.   


    $l = 3; // utf8 , gbk为2
    $str = '不是这样啊这样是扯蛋啊';
    $len = strlen($str);
    for ($i=0; $i<$len; $i+=$l) 
    ++$arr[substr($str, $i, $l)];
    arsort($arr);
    print_r($arr);
    莫非你一个字一个字去LIKE? 这样竟不准确效率又很蛋疼。
      

  8.   

    sql语句里面就没有匹配最高排序的方法吗?
    比如link '%不%' or link '%是%' or link '%这%' or link '%啊%'..........
    然后把匹配最多的做排序,mysql没这功能吗?
      

  9.   

    这样排序mysql没有。有ORDER BY整个字段排
     
      

  10.   


    找到了,这个可以根据出现次数进行排序,但是现在就支持单个字符串,多个该如何写?SELECT * 
    FROM sjk
    ORDER BY LENGTH( biaoti ) - LENGTH( REPLACE( biaoti,  'ac',  '' ) ) 
      

  11.   

    我就想用纯 php + mysql 
    做简单的单字拆分,然后取匹配最多的数据。。
    有么?
      

  12.   

    就是用php+mysql啊
    你搜索下mysql全文检索