求相关内容的思路,有代码最好。 本帖最后由 asasdisdd 于 2011-12-07 14:18:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以肯定这个功能不会是用 sql 实现的啦,最原始的思路就是“全文检索”,建议楼主去研究一下 lucene 或 sphinx。当然,百度知道这种商用系统可能在全文检索的基础上还会有更高级的匹配算法。————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 看需求了。一般不复杂。你看下这里分词http://www.ftphp.com/scws/内容要先分好词。像西安天朗国旅公司简介会分成:西安 天朗 国旅 公司简介然后你再去匹配组合数据。具体算法权重按你系统需求去定。至于数据是怎样存储你要规划好。我现在系统就这么做。数据暂时不大。效率还可以。分 LIKE就很简单啊不能实现吗 link不能啊,我是需要匹配的相同的文字最多的,如果所有文字拆分用and的匹配的话,那结果可能少的可怜,甚至都没有,,如果用or的话,结果太多,无法匹配到需要的....... 相同汉字? 单个字? 那样没意义。要做好始终是要词库分词的。没C++。也有纯php版的。要速度就弄php c扩展版的。 如果不是很特定需求的话,一般都可以用google custom searchhttp://www.google.com/cse/ $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? 这样竟不准确效率又很蛋疼。 sql语句里面就没有匹配最高排序的方法吗?比如link '%不%' or link '%是%' or link '%这%' or link '%啊%'..........然后把匹配最多的做排序,mysql没这功能吗? 这样排序mysql没有。有ORDER BY整个字段排 找到了,这个可以根据出现次数进行排序,但是现在就支持单个字符串,多个该如何写?SELECT * FROM sjkORDER BY LENGTH( biaoti ) - LENGTH( REPLACE( biaoti, 'ac', '' ) ) 我就想用纯 php + mysql 做简单的单字拆分,然后取匹配最多的数据。。有么? 就是用php+mysql啊你搜索下mysql全文检索 请高手帮忙用PHP正则表达式取代码 php代码与html代码分离问题? php自动采集代码 大量数据库查询 php传值给js,可以不用echo吗? 大家来看下这样的权限树怎么实现?谢谢 为什么,我们的服务器dllhost文件进程占用100多M的内存啊,大家看,正常不。 怎么样知道用户的浏览器所使用的分辨率是多少? 为什么直接把文件写在<input type="file" name="filename" value="c:\a.jpg">就无法上传 对象序列化传至后台, php 无法还原对象 关于视频播放的问题 PHP解码的一个小问题
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
你看下这里分词
http://www.ftphp.com/scws/内容要先分好词。像西安天朗国旅公司简介会分成:
西安 天朗 国旅 公司简介
然后你再去匹配组合数据。
具体算法权重按你系统需求去定。至于数据是怎样存储你要规划好。我现在系统就这么做。数据暂时不大。效率还可以。
分
不能实现吗
如果用or的话,结果太多,无法匹配到需要的.......
要做好始终是要词库分词的。没C++。也有纯php版的。要速度就弄php c扩展版的。
一般都可以用google custom searchhttp://www.google.com/cse/
$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? 这样竟不准确效率又很蛋疼。
比如link '%不%' or link '%是%' or link '%这%' or link '%啊%'..........
然后把匹配最多的做排序,mysql没这功能吗?
找到了,这个可以根据出现次数进行排序,但是现在就支持单个字符串,多个该如何写?SELECT *
FROM sjk
ORDER BY LENGTH( biaoti ) - LENGTH( REPLACE( biaoti, 'ac', '' ) )
做简单的单字拆分,然后取匹配最多的数据。。
有么?
你搜索下mysql全文检索