mysql 全文 短词忽略 问题_MySQL数据库对dvbbs.php全文搜索的完全分析_MySQL
以下为引用的内容:
//fcicq:下面给大家看看这里php的分词是怎么做的.
function &DV_ChineseWordSegment($str,$encodingName=’gbk’){
static $objEnc = null;
if( $objEnc === null ){
if( !class_exists(’DV_Encoding’) ){
require_once ROOT_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('#|#is’, ”, $str);
//过滤所有stopword
$str = str_replace($arrStopWords[’StrRepl’],’ ‘,$str);
$str = preg_replace($arrStopWords[’PregRepl’],’ ‘,$str);
//echo “$str:{$str}
“;
$arr = explode(’ ‘,$str);
//fcicq:好了,这下面的才是php分词关键 *************
foreach( $arr as $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;
}//end function DV_ChineseWordSegment
//fcicq:这就是传说中的substr.偶相信许多人写出来的php代码都比这个好.
function &SubString(&$str,$start,$length=null){
if( !is_numeric($start) ){
return false;
}
$strLen = strlen($str);
if( $strLen < = 0 ){
return false;
}
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×7f ){
$returnVal .= $str{$i+1}.$str{$i+2};
$i += 2;
}
$mbCount++;
} elseif( $currOrd > 0×7f ){
$i += 2;
}
$mbStart++;
}
return $returnVal;
}//end function SubString
//插入全文搜索分词表.一共两个,一个 topic_ft,一个bbs_ft
$arrTopicIndex =& DV_ChineseWordSegment($topic);
if( !empty($arrTopicIndex) && is_array($arrTopicIndex) ){
$topicindex = $db->escape_string(implode(’ ‘,$arrTopicIndex));
if( $topicindex !== ” ){
$db->query(”UPD ATE {$dv}topic_ft SET topicindex=’
{$topicindex}’ WHERE topicid=’{$RootID}’”);
} else{
$db->query(”DEL ETE FROM {$dv}topic_ft
WHERE topicid=’{$RootID}’”);
}
}
}
mysql 全文 短词忽略 问题_MySQL数据库对dvbbs.php全文搜索的完全分析_MySQL相关推荐
- MySQL数据库对dvbbs.php全文搜索的完全分析
好几天都没有更新文章了,唉,人就是懒呀. 首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实例操作吧! mys ...
- mysql 越文_mysql数据库乱码之保存越南文乱码解决方法_MySQL
bitsCN.com 我自己测试一下,很多字符变成了 '?'. 数据库连接已经是使用了 utf8 字符集: define("MYSQL_ENCODE", "UTF8&qu ...
- mysql状态监听_Mysql数据状态监听探讨(攒人品)_MySQL
bitsCN.com 年会前攒人品,你懂得! 应用场景: 长时间运行程序,需要几乎整表查询Mysql,还得在可容忍范围内响应数据变化. 方案一:通过Mysql自带的表更新时间 查询方案:SELECT ...
- mysql数据库优化大全_MySQL数据库优化技巧大全
简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...
- 优化mysql数据库_MySQL数据库优化技巧大全
简介:MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行 ...
- 删除mysql数据库中表abc语句_MySQL数据库常用命令大全
我们经常用到的MySQL数据库常用命令 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mys ...
- mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程
网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192 ...
- mysql数据库设计的原则_MySQL数据库设计原则
转自 http://www.supidea.com/post/mysql_design_database.aspx MySQL数据库设计原则 MySQL对于成为一个非常快速的数据库服务器有着当之无愧的 ...
- mysql主从数据库设计_mysql数据库主从库镜像原理及配置
最近有个项目需要在vmware虚拟机上安装mysql,由于生产环境的要求需要有必要,如果做成VM虚机操作系统层HA,需要用到虚拟共享总线,而这将会使VM丧失vmtion特性.于是选择不做OS层的高可用 ...
最新文章
- 人脸检测--Recurrent Scale Approximation for Object Detection in CNN
- 安装Grid Control
- jquery 半透明遮罩效果 小结
- VCS user guide读书笔记启发篇
- python中dict的fromkeys用法教程
- Django中使用和配置Redis数据库
- WebIDE sandbox
- mysql单源多表同步单库单表_MySQL主从复制单表或者多表
- java第一天上班需要安装那些_明天第一天上班,应该带什么包啊
- 用Gradle命令行编译Android工程
- 初识kbmmw 中的ORM
- 远程服务器登入信息,远程登录服务器查看信息
- nginx 405 not allowed问题解决方法
- cesium版本之间如何兼容_【JS】cesium与three.js 结合的栗子,结合了一下网友们的栗子,解决了three.js 高版本模型出不来的问题...
- 代码中,对象类与管理类要分开
- Web前端开发-为网页元素添加阴影效果
- 原相机怎么设置水印_原相机里面的字体颜色 相机水印字体大小怎么设置
- Pest incidence forecasting based on Internet of Things and Long Short-Term Memory Network 论文精读
- 抖音表情包项目怎么变现?普通人如何利用表情包短视频月入过万?
- java利用UUID类生成随机数