php实现scws中文分词搜索的方法

本文实例讲述了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程序设计有所帮助。

时间: 2015-12-24

PHP中文分词 自动获取关键词介绍

复制代码 代码如下: <?php header("Content-Type:text/html; charset=utf-8"); define('APP_ROOT', str_replace('\\', '/', dirname(__FILE__))); $test = '这里是一段中文测试代码!'; function get_tags_arr($title) { require(APP_ROOT.'/pscws4.class.php'); $pscws = new PSCWS

PHP中文分词的简单实现代码分享

当然, 本文不是要对中文搜索引擎做研究, 而是分享如果用 PHP 做一个站内搜索引擎. 本文是这个系统中的一篇. 我使用的分词工具是中科院计算所的开源版本的 ICTCLAS. 另外还有开源的 Bamboo, 我随后也会对该工具进行调研. 从 ICTCLAS 出发是个不错的选择, 因为其算法传播比较广泛, 有公开的学术文档, 并且编译简单, 库依赖少. 但目前只提供了 C/C++, Java 和 C# 版本的代码, 并没有 PHP 版本的代码. 怎么办呢? 也许可以学习它的 C/C++ 源码和学术

php实现的中文分词类完整实例

本文实例讲述了php实现的中文分词类.分享给大家供大家参考,具体如下: 该中文分词类源码使用http://tools.jb51.net/code/jb51_php_format进行了格式化处理,便于阅读.具体代码如下: class Segmentation { var $options = array('lowercase' => TRUE, 'segment_english' => FALSE); var $dict_name = 'Unknown'; var $dict_words = a

PHPAnalysis中文分词类详解

PHPAnalysis是目前广泛使用的中文分词类,使用反向匹配模式分词,因此兼容编码更广泛,现将其变量与常用函数详解如下: 一.比较重要的成员变量 $resultType   = 1        生成的分词结果数据类型(1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文)                                    这个变量一般用 SetResultType( $rstype ) 这方法进行设置.$notSplitLen  = 5     

使用Discuz关键词服务器实现PHP中文分词

不同于使用自己的服务器进行分词,Discuz!在线中文分词服务是基于API返回分词结果的.在项目中,我们只需要一个函数即可方便地进行分词.关键词提取.以下是根据Discuz!在线分词服务API写的函数,测试可正常运行: 复制代码 代码如下: /** * DZ在线中文分词 * @param $title string 进行分词的标题 * @param $content string 进行分词的内容 * @param $encode string API返回的数据编码 * @return  arra

开源php中文分词系统SCWS安装和使用实例

一.SCWS简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统).这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点.SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩展模

几款开源的中文分词系统

以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),主要功能包括中文分词:词性标注:命名实体识别:新词识别:同时支持用户词典:支持繁体中文:支持GBK.UTF-8.UTF-7.UNICODE等多种编码

Python中文分词实现方法(安装pymmseg)

本文实例讲述了Python中文分词实现方法.分享给大家供大家参考,具体如下: 在Python这pymmseg-cpp 还是十分方便的! 环境 ubuntu10.04 , python2.65 步骤: 1 下载mmseg-cpp的源代码 http://code.google.com/p/pymmseg-cpp/ 2 执行: tar -zxf pymmseg-cpp*.tar.gz //解压后得到pymmseg 目录 cd pymmseg\mmseg-cpp python build.py #生成

Python3爬虫中关于中文分词的详解

原理 中文分词,即 Chinese Word Segmentation,即将一个汉字序列进行切分,得到一个个单独的词.表面上看,分词其实就是那么回事,但分词效果好不好对信息检索.实验结果还是有很大影响的,同时分词的背后其实是涉及各种各样的算法的. 中文分词与英文分词有很大的不同,对英文而言,一个单词就是一个词,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分.根据其特点,可以把分词算法分为四大类: ·基于规则的分词方法 ·基于统计的分词方法 ·基于语义的分词方法 ·基于理解

python使用jieba实现中文分词去停用词方法示例

前言 jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,十分推荐. 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词. 分词模块jieba,它是python比较好用的分词模块.待分词的字符串可以是 unicode 或 UTF-8 字符串.GBK 字符串.注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8 支持三种分词模式 1 精确模式,试图将句子最精确地切开,适合

安装elasticsearch-analysis-ik中文分词器的步骤讲解

1 安装elasticsearch-analysis-ik中文分词器 Ik介绍:ik是一款中文的分词插件,支持自定义词库. 1.1 下载ik分词器 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases 下载指定版本的分词器(zip版本) 1.2 解压ik分词器 [es@bigdata1 plugins]$ cd /home/es/ [es@bigdata1 ~]$ ls elasticsearch-6.2.2 jdk1.

docker 安装solr8.6.2 配置中文分词器的方法

一.环境版本 Docker version 19.03.12 centos7 solr8.6.2 二.docker安装 1.使用官方安装脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2.使用国内 daocloud 一键安装命令: curl -sSL https://get.daocloud.io/docker | sh 三.docker安装solr8.6.2 1.docker拉取solr doc