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安装全攻略:APACHE
Oct 09 PHP
对Session和Cookie的区分与解释
Mar 16 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php格式化json函数示例代码
May 12 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 stripos()函数及注意事项的分析
2013/06/08 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python动态监控日志内容的示例
2014/02/16 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python生成器推导式用法简单示例
2019/10/08 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
利用python生成照片墙的示例代码
2020/04/09 Python
RetroStage德国:复古服装
2019/02/03 全球购物
物理教育专业毕业生推荐信
2013/11/03 职场文书
写自荐信三大法宝
2014/01/24 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
工程资料员岗位职责
2014/03/10 职场文书
2015年调度员工作总结
2015/04/30 职场文书
农村党员干部承诺书
2015/05/04 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书