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加密解密的代码
Jul 16 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
linux下实现定时执行php脚本
Feb 13 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
PHP 类与构造函数解析
Feb 06 PHP
php之可变变量的实例详解
Sep 12 PHP
php 中的信号处理操作实例详解
Mar 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
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python实现的防DDoS脚本
2011/02/08 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python基于Selenium的web自动化框架
2019/07/14 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python中pdb模块实例用法
2021/01/15 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
矫正人员思想汇报
2014/01/08 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
Python实现为PDF去除水印的示例代码
2022/04/03 Python