PHP 搜索分词实现代码
<?php
/**
* @author: xiaojiang 2014-01-08
* php 建立分词树
* */
class Tree{ public $w = '';
public $subT = array();
public $isEnd = false; public function __construct($w= '' , $isEnd = false){
if(!empty($w)){
$this->w = $w;
$this->isEnd = $isEnd;
}
}
public function insert( $str ){ $len = strlen($str);
if(!$len) return ;
$scope = $this;
for( $i = 0; $i< $len; $i++ ){
//判断汉字
$cStr = $str[$i];
if( ord( $cStr ) > 127 ){
$cStr = substr($str, $i, 3);
$i += 2;
}
$scope = $scope->insertNode( $cStr );
}
$scope->isEnd = true;
} private function &insertNode( $w ){
$t = $this->hasTree( $w );
if( !$t ){
$t = new Tree( $w );
array_push($this->subT, $t );
}
return $t;
} public function &hasTree($w){
foreach ($this->subT as $t){
if($t->w == $w)
return $t;
}
return false;
} } class myStr{ private $str = '';
private $arr = array();
private $len = 0;
public function __construct( $str){
$this->str = $str;
$len = strlen($str);
for ($i = 0; $i < $len; $i++ ){
$cStr = $str[$i];
if(ord($cStr) > 127){
$cStr = substr($str, $i , 3);
$i += 2;
}
array_push($this->arr, $cStr);
}
$this->len = count($this->arr);
} public function getIndex( $idx ){
return $this->arr[$idx];
} public function getLength(){
return $this->len;
}
} $tIns = new Tree();
$tIns->insert('中华');
$tIns->insert('人民');
$tIns->insert('共和国');
$tIns->insert('baidu'); $strIns = new myStr("cc中华的人民共和国和中国啊啊www.baidua.com"); for ($i = 0; $i < $strIns->getLength(); $i++ ){ $j = $i;
$curW = $strIns->getIndex($i);
$stIns = $tIns->hasTree( $curW );
if(!$stIns) continue; $sw = '';
while ( $stIns ){
$sw .= $stIns->w;
$_isEnd = $stIns->isEnd;
$stIns = $stIns->hasTree( $strIns->getIndex( ++$j ) );
if( !$stIns && !$_isEnd)
$sw = '';
}
if($sw)
echo $sw."<br>";
} ?>
输出:
中华
人民
共和国
baidu
PHP 搜索分词实现代码的更多相关文章
- 代码 | 自适应大邻域搜索系列之(7) - 局部搜索LocalSearch的代码解析
前言 好了小伙伴们我们又见面了,咳咳没错还是我.不知道你萌接连被这么多篇代码文章刷屏是什么感受,不过,酸爽归酸爽.今天咱们依然讲代码哈~不过今天讲的依然很简单,关于局部搜索LocalSearch的代码 ...
- phpcms搜索给分页代码添加参数方法
在使用PHPCMS开发网站时遇到了一个搜索功能,需要在搜索结果分页链接上添加一些传递的参数,不然不能够正确翻页. 方法: 找到\phpcms\libs\functions\global.func.ph ...
- jQuery带tab切换搜索框样式代码
效果体验:http://hovertree.com/texiao/jquery/23/ 代码如下,保存到HTML文件也可以查看效果: <!DOCTYPE html> <html la ...
- solr搜索分词优化
solr服务器配置好在搜索时经常会搜出无关内容,把不该分的词给分了,导致客户找不到自己需要的内容,那么我们就从配置词典入手解决这个问题. 首先需要知道自带的词典含义: 停止词:停止词是无功能意义的词, ...
- js 获取百度搜索关键词的代码
有可能有时候我们会用到在百度搜什么关键词进来我们的网站的,所有我们又想拿到用户搜索的关键词. 这是我研究了半天所得出的办法.话不多说直接贴代码 <script> function quer ...
- bootstrap搜索框样式代码及效果
<div class="container"> <div class="input-group"> <input type=&qu ...
- 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码
总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...
- php 建立 搜索 分词树
<?php /** * @author: xiaojiang 20140107 * php 建立分词树 * */ class Tree{ public $w = ''; public $subT ...
- 深入浅出SharePoint2007——定制搜索之无代码篇
需求: 输入值,如果多行文本列包含此搜索关键字,显示对应的查询结果. 解决方案: 使用Form Web Part和Data form web part. 1 创建list,并创建3列 选中默认的lis ...
随机推荐
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ...
- (原)tslib的交叉编译
今天准备重新来交叉编译qt5.3.1的源码,由于按网上说的,需要先编译tslib,所以拿起来之前的编译源码,打算重新用新的交叉编译工具再次编译一次,在查找资料的过程中浪费了些许时间.其实直接就在使用s ...
- Linux定时任务工具crontab详解及系统时间同步
Linux配置自动时间同步 linux下时间同步的两种方法分享 tail -f /var/log/cron linux下定时执行任务的方法 在LINUX中你应该先输入crontab -e,然后就会有 ...
- ajax 把返回结果作为参数传递
这个涉及到js的异步执行了,程序本身是同步执行的,到了getJSON这里的时候,这个函数是异步的,而 load_val这个函数是同步的,你需要这样来异步返回这个值 function load_val( ...
- ubuntu安装mongo数据库
安装mongo数据库,在shell下输入 sudo apt-get install mongodb 如果需要在Python中使用mongo数据库,还需要额外安装Python封装库 pip instal ...
- ssh方式与服务器建立连接
package com.ustcinfo.cinas.pmng.util; import java.io.BufferedReader; import java.io.InputStream; imp ...
- lakala proportion轨迹分析代码
/** * Created by lkl on 2017/12/7. */ import breeze.numerics.abs import org.apache.spark.sql.SQLCont ...
- Thinkphp部署
环境nginx,apache,iis naginx环境需要: apache需要: iis需要: 项目入口 1.根目录("/") 2.多级目目录(“/public”) 静态文件 静态 ...
- SharePoint PowerShell使用Export-SPWeb和Import-SPWeb指令来导出和导入网站
导出网站,例如: Export-SPWeb -Identity http://win2012sp2013:1000/Hopewell_Portal/ -Path "C:\KenmuTemp\ ...
- UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
lienhua342014-08-23 UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符. #include <unistd.h> int dup(int fi ...