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数据库调用类调用实例(详细注释)
Jul 12 PHP
PHP实现下载功能的代码
Sep 29 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
简单谈谈 php 文件锁
Feb 19 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 PHP
PHP7移除的扩展和SAPI
Mar 09 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
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
深入理解python try异常处理机制
2016/06/01 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python3数字求和的实例
2019/02/19 Python
详解python读取image
2019/04/03 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
书法比赛获奖感言
2014/02/10 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
小学总务工作总结
2015/08/13 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python