求相关内容的思路,有代码最好。 本帖最后由 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 站内搜索 模糊匹配怎么实现 传值得到后分页问题 php5.2.6 +mssql2005 数据库模糊查询得问题!在线等啊! 关于php会话(session)的几个新手问题 php5 中__clone方法问题。 给大家一个大饼图,不是有人要这个东西但是不会画嘛,呵呵。 求 PHP+Orcale 开发资料 郁闷死我了。在EditPlus里敲错一个变量名字,我从头到尾查了一遍才找出来 昨天刚装的PHP4.31 FOR确良WINDOWS.怎么运行程序都出错啊.以前在别的主机上很好的啊. 关于视频播放的问题 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全文检索