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下判断数组中是否存在相同的值array_unique
Mar 25 PHP
PHP的基本常识小结
Jul 05 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
php操作mongoDB实例分析
Dec 29 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
php swoft框架实例用法
Dec 22 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漏洞小结
2012/02/05 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
python能做哪方面的工作
2020/06/15 Python
基于python实现坦克大战游戏
2020/10/27 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
家长对孩子评语
2014/01/30 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
员工团队活动方案
2014/08/28 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
武侯祠导游词
2015/02/04 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
警用民用对讲机找不同
2022/02/18 无线电
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫