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 相关文章推荐
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
php checkbox 取值详细说明
Aug 19 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
PHP线程的内存回收问题
Jul 08 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
Docker配置PHP开发环境教程
Dec 21 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
全面了解js中的script标签
2016/07/04 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python 把列表转化为字符串的方法
2018/10/23 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
个人政风行风自查自纠报告
2014/10/21 职场文书
初中作文评语集锦
2014/12/25 职场文书
家庭经济困难证明
2015/06/23 职场文书
合作意向书怎么写
2019/06/24 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL