以下为引用的内容:

//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相关推荐

  1. MySQL数据库对dvbbs.php全文搜索的完全分析

    好几天都没有更新文章了,唉,人就是懒呀. 首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实例操作吧! mys ...

  2. mysql 越文_mysql数据库乱码之保存越南文乱码解决方法_MySQL

    bitsCN.com 我自己测试一下,很多字符变成了 '?'. 数据库连接已经是使用了 utf8 字符集: define("MYSQL_ENCODE", "UTF8&qu ...

  3. mysql状态监听_Mysql数据状态监听探讨(攒人品)_MySQL

    bitsCN.com 年会前攒人品,你懂得! 应用场景: 长时间运行程序,需要几乎整表查询Mysql,还得在可容忍范围内响应数据变化. 方案一:通过Mysql自带的表更新时间 查询方案:SELECT ...

  4. mysql数据库优化大全_MySQL数据库优化技巧大全

    简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...

  5. 优化mysql数据库_MySQL数据库优化技巧大全

    简介:MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行 ...

  6. 删除mysql数据库中表abc语句_MySQL数据库常用命令大全

    我们经常用到的MySQL数据库常用命令 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mys ...

  7. mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程

    网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192 ...

  8. mysql数据库设计的原则_MySQL数据库设计原则

    转自 http://www.supidea.com/post/mysql_design_database.aspx MySQL数据库设计原则 MySQL对于成为一个非常快速的数据库服务器有着当之无愧的 ...

  9. mysql主从数据库设计_mysql数据库主从库镜像原理及配置

    最近有个项目需要在vmware虚拟机上安装mysql,由于生产环境的要求需要有必要,如果做成VM虚机操作系统层HA,需要用到虚拟共享总线,而这将会使VM丧失vmtion特性.于是选择不做OS层的高可用 ...

最新文章

  1. 人脸检测--Recurrent Scale Approximation for Object Detection in CNN
  2. 安装Grid Control
  3. jquery 半透明遮罩效果 小结
  4. VCS user guide读书笔记启发篇
  5. python中dict的fromkeys用法教程
  6. Django中使用和配置Redis数据库
  7. WebIDE sandbox
  8. mysql单源多表同步单库单表_MySQL主从复制单表或者多表
  9. java第一天上班需要安装那些_明天第一天上班,应该带什么包啊
  10. 用Gradle命令行编译Android工程
  11. 初识kbmmw 中的ORM
  12. 远程服务器登入信息,远程登录服务器查看信息
  13. nginx 405 not allowed问题解决方法
  14. cesium版本之间如何兼容_【JS】cesium与three.js 结合的栗子,结合了一下网友们的栗子,解决了three.js 高版本模型出不来的问题...
  15. 代码中,对象类与管理类要分开
  16. Web前端开发-为网页元素添加阴影效果
  17. 原相机怎么设置水印_原相机里面的字体颜色 相机水印字体大小怎么设置
  18. Pest incidence forecasting based on Internet of Things and Long Short-Term Memory Network 论文精读
  19. 抖音表情包项目怎么变现?普通人如何利用表情包短视频月入过万?
  20. java利用UUID类生成随机数

热门文章

  1. XX项目测试策略思维导图
  2. SVS为某公司打造先进的无纸化会议中心
  3. chrome v8引擎
  4. android 设置画布大小设置,Android自定义视图:设置画布大小以包装位图
  5. 闭环反馈:它是什么以及为什么它是客户体验的重要组成部分
  6. 未来大数据精准营销构想 一个合格的DMP平台要具备哪些条件?
  7. 将pdf按页插入word中_如何将PDF插入Microsoft Word
  8. linux 打印相关备忘
  9. 网络管理命令ping的使用
  10. Java开发校招面经