- 注册时间
- 2011-6-21
- 最后登录
- 2012-4-6
- 阅读权限
- 100
- 积分
- 113
- 精华
- 0
- 帖子
- 32
  
|
发表于 2011-6-25 20:19:18
|显示全部楼层
本帖最后由 淘淘 于 2011-6-25 22:49 编辑
首先说明,PHP分词系统是别人,本人只是整理一下,如何使用,让初学者一目了然。
开始啦。。。
运行环境: windows server 2003 + php5.2.10(这是我的电脑配置,嘿嘿...)
组件下载:
词典文件:
规则集文件:
数据转换工具:
组件安装方法:php_scws.dll/Win32 安装说明
1. 根据您当前用的 PHP 版本,下载相应已编译好的 php_scws.dll 扩展库。
2. 将下载后的 php_scws.dll 放到 php 安装目录的 /extensions/ 目录中去(通常为:X:/php/extensions/或 X:/php/ext/)。
3. 建立一个本地目录放规则集文件和词典文件,建议使用:X:/php/scws/etc
4. 根据您当前用PHP程序使用的编码,下载相应的词典文件,解压后将 *.xdb 放到上述目录中。
5. 根据您当前用PHP程序使用的编码,下载相应的规则集文件,解压后将 *.ini 放到第 3 步建立的目录中。
6. 修改 php.ini 通常位于 C:/windows/php.ini 或 X:/php/php.ini 之类的目录,在 php.ini 的末尾加入以下几行:
- [scws]
- ;
- ; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空,
- ; 默认编码规则:utf8 或 gbk
- ; 再把 php_scws.dll 指定为绝对路径。
- ;
- extension = php_scws.dll
- scws.default.charset = gbk
- scws.default.fpath = "X:/php/scws/etc"
复制代码
7. 重开 web 服务器即可完成。
PHP代码调用方法:
举例:
- <?php
- $k_code="这是一段测试分词文字,请不要大惊小怪的!"
- ///* 分词开始 *///
- $cws = scws_new();
- $cws->set_charset('utf8'); //编码规则
- $cws->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini');
- $cws->set_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
- $cws->add_dict("X:/PHP/scws/etc/dict_extra_utf8.txt", SCWS_XDICT_TXT); //自定义词库(绝对路径)
- if (get_magic_quotes_gpc()){
- $k_code_all = stripslashes($k_code);
- }
- $cws->set_ignore(true); //默认去掉标点
- $cws->send_text($k_code_all);
- while ($res = $cws->get_result()){
- foreach ($res as $tmp){
- if ($tmp['len'] == 1 && $tmp['word'] == "\r")
- continue;
- if ($tmp['len'] == 1 && $tmp['word'] == "\n")
- $k_code_all_show=$tmp['word'];
- else
- $k_code_all_show=$k_code_all_show.'|'.$tmp['word'];
- }
- flush();
- }
- $cws->close();
- //生成sql语句
- $k_code_all_arr = explode("|", $k_code_all_show);
- foreach ($k_code_all_arr as $i){
- if($i != ''){
- $sql_all=$sql_all." (title like '%$i%') and ";
- }
- }
- if($sql_all==''){
- $sql_all='';
- }
- else{
- $sql_all=substr($sql_all,0,-4);
- $sql_all=' and '.$sql_all;
- }
- ///* 分词结束 *///
- echo $sql_all; //打印输出sql语句
- ?>
复制代码
结束:好啦,终于搞定了,大家可以按照上面的方式试试吧。。。(全文索引还没整理,等弄好了,在更新吧。。。)
|
|