Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18671968
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-05-29 09:01:30


搜索引擎中都要用到分词技术,一般都用在全文搜索中,这是一个简单的分词php代码,实际应用意义并不大
function substring($str, $start, $len){
 
 $strlen = strlen($str);
 if($start > $strlen){
 return "";
 }
 for($i = 0; $i < $start; $i++){
 if(ord($str[$i]) > 0x7f ){
 $start++;
 $i++;
 }
 }
 for($i=0; $i < $len; $i++) {
 if(ord($str[$i+$start]) > 0x7f){
 $len++;
 $i++;
 }
 }
 return substr($str, $start, $len);
}
 
// 切词函数,有时用在mysql 全文检索上
function wordSegment($str, $len)
{
 $startPos = 0;
 $strLen = $real_strLen = strlen($str);
 
 for($i = 0; $i < $real_strLen; $i++){
 if(ord($str[$i]) > 0x7f ){
php程序员站

 $strLen--;
 $i++;
 }
 }
 
 $rltStrArray = array();
 while(($strLen - $startPos) >= $len )
 {
 $rltStrArray[] = substring($str, $startPos++, $len);
 }
 return $rltStrArray;
}
 
$testStr = "nbs v1.0beta测试版发布!";
echo $testStr . "\r\n";
print_r(wordSegment($testStr, 3));
?>
运行结果:Array ( [0] => nbs v1 [1] => bs v1. [2] => s v1.0 [3] => v1.0b [4] => v1.0be [5] => 1.0bet [6] => .0beta [7] => 0beta测 [8] => beta测试 [9] => eta测试版 [10] => ta测试版发 [11] => a测试版发布 [12] => 测试版发布!
阅读(513) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~