本文目录一览:
PHP中文分词应用到搜索的例子
中文分词,首先对您输入的搜索关键字进行分词,然后数据库中本来就存在一个索引表,就像个词典,然后当你进行搜索的时候就用你的词去和那本字典对比,得到索引结果表,然后通过id类似于偏移地址,得到真正的数据源地址,反馈回来,这是我平时做搜索的方法,希望对你有用。顺便插播个小广告bbs.45net.cn。有时间捧个人场。O(∩_∩)O~
php 一般使用什么中文分词扩展
Robbe是建立在Friso中文分词器上的一个高性能php中文分词扩展,除了提供了基本的分词函数以外,还提供一些编码转换函。
Robbe完整版本(PHP测试程序, 开发帮助文档, WinNT下php各版本的dll文件)下载:code.google.com/p/robbe
一. 关于Robbe:
robbe是建立在friso中文分词上的一个高性能php中文分词扩展。了解friso
1.目前最高版本:friso 1.6.0,【源码无需修改即可在各平台下编译运行】
2.mmseg四种过滤算法,分词准确率达到了98.41%。
3.详细功能,请访问friso官方首页:friso [code.google.com/p/friso]
二. Robbe分词速度:
测试环境:2.8GHZ/2G/Ubuntu
简单模式:3.1M/秒
复杂模式:1.4M/秒
(因为php中的大量字符串的复制,性能比friso有些下降)。
php 提取中文后简单分词
$str = "汉字一二3四5六七八,九十六七...";
$s1 = array();//初始化储存第二步结果的数组
//preg_match_all("/[x80-xff]+/", $str, $match);//此为GBK使用
preg_match_all("/[\x{4e00}-\x{9fa5}]{2,}+/u", $str, $match);//此为UTF-8使用
foreach($match[0] as $str1)//循环遍历匹配到的汉字
{
$leng = iconv_strlen($str1, "UTF-8");//计算汉字其长度
for($i = 0; $i $leng-1; $i++)
{
$temp = mb_substr($str1, $i, 2, "UTF-8");//将汉字切割长两个字,得第一步结果
if(!in_array($temp, $s1))//去除重复,得第二步结果
$s1[] = $temp;//得到的汉字存入数组
}
}
//print_r($s1);//第一二步完成,得数组$s1,可打印查看结果
$s2 = file_get_contents("21.txt");//将文件内所有字符读取成一个字符串
$s2 = iconv("", "UTF-8", $s2);//将字符串转码,否则难免有乱码
//echo $s2;//可输出查看文件中的内容
$s = "";//初始化最终结果的变量
foreach($s1 as $j)//遍历汉字对
{
if(preg_match("/".$j."/", $s2))//判断该汉字对是否被包含于文件的文字中
$s .= ("" == $s) ? $j : "\\".$j;//将结果合在$s中
}
echo $s;//得结果,可输出查看或调用
若有疑问,可追问。
注释详细,希望能加分
php 中文分词难题 sphinx
1.看一下bin目录是否存在search.exe
如果不存在,就不能用search命令,看你下载到的是什么版本,有些版本是没有这个文件的。
2.Query()的两个参数,第一个是搜索的关键词,第二个是索引。
没有结果的话,请确保你的数据中有那个关键词,还要确保索引存在,并配置正确。
以前弄这个的时候,我写了篇笔记:
有兴趣可以去看一下。