仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 797|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页编程之mysql全文搜刮:sql的写法

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。</p>起首,人人先往下载一份dvbbs.phpbeta1的代码,解压后先抛开php代码,找出你的mysql手册,假如没有手册那末就间接看上面的实例操纵吧!
mysql全文搜刮,sql的写法:
MATCH(col1,col2,…)AGAINST(expr[INBOOLEANMODEWITHQUERYEXPANSION])
好比:
SELECT*FROMarticlesWHEREMATCH(title,body)AGAINST(’database’);
MATCH()函数关于一个字符串实行材料库内的天然言语搜刮。一个材料库就是1套1个或2个包括在FULLTEXT内的列。搜刮字符串作为对AGAINST()的参数而被给定。关于表中的每行,MATCH()前往一个相干值,即,搜刮字符串和MATCH()表中指定列中该行笔墨之间的一个类似性器度。
上面的例子则加倍庞大。扣问前往相干值,同时对行依照相干性渐弱的按次举行排序。为完成这个了局,你应当两次指定MATCH():一次在SELECT列表中而另外一次在WHERE子句中。这不会引发分外的外务操纵,缘故原由是MySQL优化程序注重到两个MATCH()挪用是不异的,从而只会激活一次全文搜刮代码。
以下为援用的内容:
mysql>SELECTid,body,MATCH
(title,body)AGAINST
->(’Securityimplicationsof
runningMySQLasroot’)ASscore
->FROMarticlesWHEREMATCH
(title,body)AGAINST
->(’Securityimplicationsof
runningMySQLasroot’);

以是,到这里你应当会mysql英文全文搜刮了.
请注重一个成绩.
一些词在全文搜刮中会被疏忽:
*任何过于短的词城市被疏忽。全文搜刮所能找到的词的默许最小长度为4个字符。
*中断字中的词会被疏忽。
mysql还自带查询扩大功效.这里不做过量会商.
上面举行php中文全文搜刮的剖析
已经有一个版本的mysql撑持中文全文搜刮(海量mysqlchinese+,说是GPL可是终极没有开源)
中文全文搜刮的关头是在分词上.mysql自己不撑持cjk的分词(cjk:chinese,japanese,korean),
以是
!!!!****怎样用php摹拟分词是mysql全文索引的关头****!!!!
中文分词是言语分词中最坚苦的.如今也没有人可以完全完善的办理(固然这些搜刮引擎做的都还不错.)
以下为援用的内容:
//fcicq:上面给人人看看这里php的分词是怎样做的.
function&DV_ChineseWordSegment($str,$encodingName=’gbk’){
static$objEnc=null;
if($objEnc===null){
if(!class_exists(’DV_Encoding’)){
require_onceROOT_PATH.’inc/DV_Encoding.class.php’;
}
$objEnc=&DV_Encoding::GetEncoding($encodingName);
}
$strLen=$objEnc->StrLength($str);
$returnVal=array();
if($strLen<=1){
return$str;
}
$arrStopWords=&DV_GetStopWordList();
//print_r($arrStopWords);
//过滤一切HTML标签
$str=preg_replace(#<[a-zA-Z]+?.*?>#is’,”,$str);
//过滤一切stopword
$str=str_replace($arrStopWords[’StrRepl’],’‘,$str);
$str=preg_replace($arrStopWords[’PregRepl’],’‘,$str);
//echo“$str:{$str}
“;
$arr=explode(’‘,$str);
//fcicq:好了,这上面的才是php分词关头*************
foreach($arras$tmpStr){
if(preg_match(”/^[x00-x7f]+$/i”,$tmpStr)===1)
{//fcicq:满是E文,不妨,mysql能够熟悉的
$returnVal[]=‘‘.$tmpStr;
}else{//fcicq:中英夹杂…
preg_match_all(”/([a-zA-Z]+)/i”,$tmpStr,$matches);
if(!empty($matches)){//fcicq:英语部分
foreach($matches[0]as$matche){
$returnVal[]=$matche;
}
}
//过滤ASCII字符
$tmpStr=preg_replace(”/([x00-x7f]+)/i”,”
,$tmpStr);//fcicq:你看,剩下的不就满是中文了?
$strLen=$objEnc->StrLength($tmpStr)-1;
for($i=0;$i<$strLen;$i++){
$returnVal[]=$objEnc->SubString($tmpStr,$i,2)
;//fcicq:注重这里的substr,不是手册上的.
//fcicq:你细心看,一切的词都是分红两个.
//好比”数据库的使用”,会被分红数据据库库的的应使用…
//全文搜刮:全文文搜搜刮
//这分词天然是不怎样的
//可是,搜刮的时分一样这么做.
//好比搜刮数据库,就相称于搜刮了数据据库.
//这是一种相称传统的全文搜刮分词办法.
}
}
}
return$returnVal;
}//endfunctionDV_ChineseWordSegment
//fcicq:这就是传说中的substr.偶信任很多人写出来的php代码都比这个好.
function&SubString(&$str,$start,$length=null){
if(!is_numeric($start)){
returnfalse;
}
$strLen=strlen($str);
if($strLen<=0){
returnfalse;
}
if($start<0$length<0){
$mbStrLen=$this->StrLength($str);
}else{
$mbStrLen=$strLen;
}
if(!is_numeric($length)){
$length=$mbStrLen;
}elseif($length<0){
$length=$mbStrLen+$length-1;
}
if($start<0){
$start=$mbStrLen+$start;
}
$returnVal=;
$mbStart=0;
$mbCount=0;
for($i=0;$i<$strLen;$i++){
if($mbCount>=$length){
break;
}
$currOrd=ord($str{$i});
if($mbStart>=$start){
$returnVal.=$str{$i};
if($currOrd>0
不帅 该用户已被删除
沙发
发表于 2015-1-19 06:30:50 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
柔情似水 该用户已被删除
板凳
发表于 2015-1-28 05:22:33 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
小魔女 该用户已被删除
地板
发表于 2015-2-5 17:03:51 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-13 02:43:30 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
乐观 该用户已被删除
6#
发表于 2015-3-3 13:21:21 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 11:21:55 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
小妖女 该用户已被删除
8#
发表于 2015-3-18 14:43:24 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
9#
发表于 2015-3-26 07:16:39 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 22:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表