php实现scws中文分词搜索的方法


Posted in PHP onDecember 25, 2015

本文实例讲述了php实现scws中文分词搜索的方法。分享给大家供大家参考,具体如下:

1、4个文件(本站下载地址。)解压后,放到一个地方 eg:E:/wamp/scws

2、php.ini 中配置

extension = php_scws.dll 
scws.default.charset = utf8 //配置默认的编码方式
scws.default.fpath = "E:/wamp/scws" //加压后文件的路径

3、使用

$so = scws_new(); 
$so->set_charset('utf8'); //编码
// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件 
$so->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
//$so->add_dict('./dd.txt',SCWS_XDICT_TXT);
$so->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini'); 
$so->set_duality(0);  //散字二元 
$so->set_ignore(0); //忽略标点符号
$so->set_multi(0); 
$wd='要搜索的内容';
$so->send_text($wd); 
while($tmp = $so->get_result())
//遍历后即得到字符串分割后的内容,
//根据得到的内容分别到数据库中查找(like匹配)
{
}

亲自试验了一下如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<?php
function search($keywords,$table,$key1,$key2){
// (要查找的字符串,表名,字段一,字段二)如果就一个字段的话,$key2='';
 $arr=array();
 $str=array(); 
 if( preg_match("/^[^\x80-\xff]+$/", $keywords)){//判断keywords是否全为英文,全为英文的话按照字符串切割处理
 $str1=explode(' ',$keywords); //先按照空格切割
 foreach($str1 as $key=>$value)
 {
  $str2=explode(',',$value); //,切割
  foreach($str2 as $k=>$v)
  {
  $str3=explode('.',$v); //。切割
  foreach($str3 as $kk=>$vv)
  {
   array_push($arr,$vv);//处理完后,返回一个数组
  }
  }
 }
 }else{//对中文的分词处理
 $so = scws_new(); 
 $so->set_charset('utf8'); 
  // 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件 
   $so->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
   $so->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini'); 
   $so->set_duality(0);  //散字二元 
  $so->set_ignore(0); //忽略标点符号
  $so->set_multi(0);
 $so->send_text($keywords);
 while ($tmp = $so->get_result())//得到一个数组,里面包含词组和标点符号
 {
  foreach($tmp as $key=>$value)
  {
  $value=$value["word"];
  if(preg_match("/^[一-?]{6,21}$/", $value))//去除标点符号
  {
   array_push($arr,$value);
  }
  }
 }
 }
 foreach($arr as $key=>$value)//便利得到的数组,到数据库中匹配
 {
 if($key2!='')
 {
  $sql="select * from `$table` where `$key1` like '%$value%' or `$key2` like '%$value%'";
 }else{
  $sql="select * from `$table` where `$key1` like '%$value%'";
 }
 $query=mysql_query($sql);
 array_push($str,$query);
 }
 return $str;
}
include('conn.php');
$keywords="哈哈lsd djk,hdjs dd";
$table='two_key';
$key1='address';
$key2='';
$query=search($keywords,$table,$key1,$key2);
foreach($query as $key=>$value)
{
 while($row=mysql_fetch_array($value))
 {
 echo $row[id].'----'.$row[name].'-----'.$row[address].'<br>';
 }
}
?>
</body>
</html>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP5中的时间相差8小时的解决办法
Mar 28 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
php中fsockopen用法实例
Jan 05 PHP
php比较相似字符串的方法
Jun 05 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
php自定义分页类完整实例
Dec 25 #PHP
php导出生成word的方法
Dec 25 #PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 #PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 #PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 #PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 #PHP
php实现统计目录文件大小的函数
Dec 25 #PHP
You might like
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php HTML无刷新提交表单
2016/04/05 PHP
php获取微信openid方法总结
2019/10/10 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
公司寄语大全
2014/04/10 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
户籍证明模板
2014/09/28 职场文书
成本会计实训报告
2014/11/05 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python