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 设置MySQL连接字符集的方法
Jan 02 PHP
PHP调用Webservice实例代码
Jul 29 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
php 获取文件行数的方法总结
Oct 11 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
基于php伪静态的实现方法解析
Jul 31 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
高中生期末评语
2014/01/28 职场文书
学校大课间活动方案
2014/01/30 职场文书
卫生安全检查制度
2014/02/04 职场文书
同事吵架检讨书
2014/02/05 职场文书
2015个人半年总结范文
2015/03/09 职场文书
放飞理想主题班会
2015/08/14 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
Python实现数据的序列化操作详解
2022/07/07 Python