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 相关文章推荐
php中截取字符串支持utf-8
Jan 18 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP 基本语法格式
Dec 15 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
php简单统计在线人数的方法
May 10 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 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
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
详解element-ui中form验证杂记
2019/03/04 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
python中反射用法实例
2015/03/27 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
详解KMP算法以及python如何实现
2020/09/18 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
小学生常见病防治方案
2014/06/06 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
招标保密承诺书
2015/01/20 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
离婚被告代理词
2015/05/23 职场文书
工资证明范本
2015/06/12 职场文书
清明节主题班会
2015/08/14 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB