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 相关文章推荐
腾讯QQ php程序员面试题目整理
Jun 08 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
php检测图片主要颜色的方法
Jul 01 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
PHP反射实际应用示例
Apr 03 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 insert语法详解
2008/06/07 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python爬虫的工作原理
2017/03/05 Python
Python实现KNN邻近算法
2021/01/28 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
健康状况证明书
2014/11/26 职场文书
订货会邀请函
2015/01/31 职场文书
监察建议书
2015/02/04 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
校运会加油稿大全
2015/07/22 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android