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环境搭建最新方法
Sep 05 PHP
PHP 的几个配置文件函数
Dec 21 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
php关联数组快速排序的方法
Apr 17 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
浅谈PHP中output_buffering
Jul 13 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
php session 写入数据库
Feb 13 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 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保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python 美化输出信息的实例
2018/10/15 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
创意活动策划书
2014/01/15 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
高中教师评语大全
2014/04/25 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
就业意向协议书
2015/01/29 职场文书
男方婚前保证书
2015/02/28 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
vue的项目如何打包上线
2022/04/13 Vue.js