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 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
基于mysql的bbs设计(四)
Oct 09 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP框架性能测试报告
May 08 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 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中构造函数和析构函数解析
2014/10/10 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
Add a Table to a Word Document
2007/06/15 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
深入讲解Python编程中的字符串
2015/10/14 Python
python如何查看系统网络流量的信息
2016/09/12 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
基于Django统计博客文章阅读量
2019/10/29 Python
工作经常出错的检讨书
2014/09/13 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年大学生实习评语
2015/03/25 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python