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读写文件的方法(生成HTML)
Nov 27 PHP
MYSQL环境变量设置方法
Jan 15 PHP
php学习 字符串课件
Jun 15 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php中namespace use用法实例分析
Jan 22 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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者的疑难问答(2)
2006/10/09 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
jquery下json数组的操作实现代码
2010/08/09 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
python 文件转成16进制数组的实例
2018/07/09 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
Python Web版语音合成实例详解
2019/07/16 Python
python做接口测试的必要性
2019/11/20 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
浅谈django 重载str 方法
2020/05/19 Python
python 调整图片亮度的示例
2020/12/03 Python
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
网络信息管理员岗位职责
2014/01/05 职场文书
三好生演讲稿
2014/09/12 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android