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 相关文章推荐
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
解析php开发中的中文编码问题
Aug 08 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
jquery text()要注意啦
2009/10/30 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python基础教程项目三之万能的XML
2018/04/02 Python
Django中的文件的上传的几种方式
2018/07/23 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
自我反省检讨书
2014/01/23 职场文书
募捐倡议书
2014/04/14 职场文书
活动总结怎么写
2014/04/28 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS