logo for hightman@twomice
hightman.cn
Hightman is the same as twomice, 马明练, maminglian etc.
以自己为圆心, 兴趣爱好为长轴, 所知所觉为短轴的一个小扁椭圆.

These contents include, but aren't limited to: Internet Tech. Architecture Art. Personal Info.

Notice: 除特殊注明外, 本站均为原创, 如有转载请注明出处和作者, 谢谢!

Seekle Search

Relational Links

My weblogs
[2012-03-29] 2012-3-29: SCWS-1.2.0 Released.

1) 修改 php 扩展代码以兼容支持 php 5.4.x
2) 修正 php 扩展中 scws_get_tops 的 limit 参数不允许少于 10 的问题
3) libscws 增加 scws_fork() 从既有的 scws 实例产生分支并共享词典/规则集,主要用于多线程开发。
4) 新增部分版本的 win32 的 dll 扩展,详见下载页面

最新下载地址:http://www.ftphp.com/scws/download.php
演示地址:http://www.ftphp.com/scws/demo.php
Posted on SCWS by [阅读全文]

[2012-03-05] 近期 php5.4.x 已经正式发布,已有网友在使用并汇报说 scws 的 PHP 扩展无法编译通过。

刚看了一下,因为 5.4.x 起 php 移除了 safe_mode 导致一些代码错误不通过编译,简单修改补丁如下,请大家先手动修改一下,稍后 scws-1.1.10 发布时会同步解决,并推出 5.4 的 win32 dll 文件。

[code]
Index: php_scws.c
===================================================================
RCS file: /home/cvsroot/scws/phpext/php_scws.c,v
retrieving revision 1.13
diff -c -r1.13 php_scws.c
*** php_scws.c 23 Dec 2011 07:05:26 -0000 1.13
Posted on SCWS by [阅读全文]

[2011-12-28] 2011-12-26: SCWS-1.1.9 Released.

1) 明确使用开源协议 New BSD License 发布新版本
2) 深度优化复合分词中的 SCWS_MULTISHORT 选项,更为合理有效,符合全文检索的需求
3) 测试脚本自动加载当前目录下的 dict_user.txt 文本词典
4) 修正 scws.c 中 __PARSE_XATTR__ 宏的 BUG 导致 scws_get_tops 和 scws_get_words 的 xattr 参数工作不正常的问题
5) 移除 scws.c 中关于 jabberd2s10 的注释,已不包含它的代码
6) 为独立使用的 .h 文件添加 C++ 的 extern "C" 标记以便直接使用:xdb.h,xdict.h,xtree.h,pool.h,darray.h

最新下载地址:http://www.ftphp.com/scws/download.php
演示地址:http://www.ftphp.com/scws/demo.php
Posted on SCWS by [阅读全文]

[2011-10-14] 标题的描述可能不是非常清楚,先罗嗦重新解释一下。

通常在命令行里运行PHP脚本时,从标准输入读取数据时是有缓冲的,在终端敲回车前所输入的字符是没有真正发送到服务端的。

某种情况下,我们在做交互程序时,希望用户每键入一个字符就能被脚本检测到并触发相应的功能(实现类似SHELL里上下键可以翻页历史指令)。

这些状况在 TELNET 协议里都有相关的描述,是按回车时传送数据还是一键一传,是否回显用户的输入都是双方协商而定的。

在SSH/TELNET到服务端时会有一个初始协定,如果您想改变它可以调用 stty 指令。PHP的示例代码如下:

[code]
Posted on PHP by [阅读全文]

[2011-09-23] 经过 2 周如火如荼的测试和修正,很高兴如期发布 xunsearch-1.0.0 正式稳定版,这也是 xunsearch 的第一个正式版本。

Xunsearch 是免费开源的专业全文检索解决方案,旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。全文检索可以帮助您降低服务器搜索负荷、极大程度的提高搜索速度和用户体验。

高性能:后端是采用 C/C++ 开发多线程服务端,索引设计基于 Xapian 和 scws 中文分词。单库最多支持 40 亿条数据,在 500 万网页大约 1.5TB 的数据中检索时间不超过 1 秒(非缓存)。

简单易用:前端是使用脚本语言编写的开发工具 (SDK),目前仅支持 PHP 语言。API 简单清晰,开发难度极低,提供全中文的示例代码、文档、辅助脚本工具等。

全功能:除支持基础的自定义分词、字段检索、布尔搜索外,还直接支持用户急需的相关搜索、拼音搜索、搜索建议等专业功能。

官方网站:http://www.xunsearch.com/
Posted on SCWS by [阅读全文]

[2011-09-09] 迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,提供 PHP 语言的开发接口。

旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。全文检索可以帮助您降低服务器搜索负荷、极大程度的提高搜索速度和用户体验。

支持海量数据高速检索,功能强大,简单易用,而且开源免费!代码已经全部托管在 github 上。

经过数月的努力开发,目前终于发布测试版本,该版本主要用于测试目的,可能还会存在一些 bug 或问题,不要用于生产环境。

网站还在进一步修改和调整中,请直接访问下面地址:

下载地址:http://www.xunsearch.com/download/
Posted on SCWS by [阅读全文]

[2011-08-10] 在 demo 中测试 v,n 结果只有 n 的,测试~v,n,vn 结果还是会出现包含这些词性的。

这。。。似乎完全有BUG,稍后查。
Posted on SCWS by [阅读全文]

[2011-06-14] 手上有一台机器一直跑 PHP 5.3.x (fpm或fastcgi方式),常常不定时发生死锁现象。

表现为 FCGI 服务连不上,NGINX报告 502 bad gateway,这时系统里的 php 进程其实都还在,但都卡在 futex() 这一系统调用上,很明显发生死锁了。

查了一些资料,发现这个BUG早在2年前就有人提交过了,至今似乎没有妥善的解决办法,原因在于锁住资源时如果发生脚本超时,则时PHP内部通过 longjmp 跳转来关闭请求,导致锁无法正确释放。参见:http://pecl.php.net/bugs/bug.php?id=17589 和 http://bugs.php.net/bug.php?id=46025

目前在PHP5.3可以在 php.ini 中增加 exit_on_timeout = On 来解决,意思是当发生超时就索性把进程杀死,以便让系统回收这类锁资源,避免死锁。
Posted on PHP by [阅读全文]

[2011-05-21] 下载地址
http://www.ftphp.com/scws/download.php

主要更新记录如下:

1) 删除 __PARSE_XATTR__ 宏中企图修改 xattr 的内容的作法, 当 xattr 为常量字符串时会出错.
2) 调整 config.h 的包含方式移入 .c 文件而非 .h 文件
3) 增加一些PHP测试脚本, 位于phpext/scws_test.php, 精选了一些岐义较多的语句进行测试。
4) 修正 scws_has_word() 的一处内存汇露 (感谢lauxinz)
5) 修改调试模式的编译选项,去除-O2避免源码和代码无法对应。 (感谢lauxinz)
Posted on SCWS by [阅读全文]

[2011-04-20] 1.修正夹杂在汉字中间的1-2个英文字符的词性为 en 而不是原来的 un 导致清除符号时消失.
2.调整将数字后面的独立 % 纳入整词作为百分比,如 33.3% 作为整词而不再是 33.3 和 %
3.修改连字符(-)和下划线(_)的规则,当出现在字母单词之间时视为同一词而不再强行切开,此时如果激活复合分词的 DUALITY 选项,则仍能将符号切开作为复合词。
4.修正浮点数的识别规则,避免将IPv4地址识别为2个小数的尴尬,比如 192.168.1.1 以前会被切成 192.168 和1.1 2个数字,现在不会了。
5.libscws 安装后将所有的头文件(*.h)按装到 $prefix/include/scws 而不是以前的 $prefix/include,故采用C API开发时头部建议写 #include <scws/scws.h>
下载地址:http://www.ftphp.com/scws/download.php
Posted on SCWS by [阅读全文]

[2011-01-01] 2010-12-31: SCWS-1.1.5 Released.

1) 修正 xdb.c 中存在的一处缓冲区溢出, 感谢论坛网友 hovea.
2) 修正 phpext/ 中 scws_get_result() 参数解析里多了一个z 的问题,感谢网友(阿男)告知
3) 修正 scws.c 中某些字符在ignore symbol设置下无效的问题
4) 修正 1.1.4 的 xdb.c 270行处由于书写错误导致的严重错误, 1.1.4版作废应及时升为 1.1.5

下载地址:http://www.ftphp.com/scws/download.php
Posted on SCWS by [阅读全文]

[2010-12-02] 应网友要求,现试提供该功能,满足一些云应用平台的需求,请不要发起过于频繁的请求给服务器造成难以承受的压力,谢谢!

使用网址及说明参见:http://www.ftphp.com/scws/api.php
Posted on SCWS by [阅读全文]

[2010-11-09] 今天才发现#php#在解析 cookie 时会把名称中包含的.(点)转换成_(下划线),翻遍手册没发现有任何标注,特意去翻RFC也没找到相应的约定,看来应该是PHP自己的发明。(所以:当你设置了一个包含.或空格作名字的cookie,再读取时记得自行转换名字,否则就读不到)

php源码中的 main/php_variables.c 有以下部分:
代码:
98     /* ensure that we don't have spaces or dots in the variable name (not binary safe)
99     for (p = var; *p; p++) {
100         if (*p == ' ' || *p == '.') {
101             *p='_';
102         } else if (*p == '[') {
Posted on PHP by [阅读全文]

[2010-11-03] 通常正则替换(preg_replace)会用 $1 或 \1 来作反向引用,如下:

'$1' . $string . '$2' 或 '\1' . $string . '\2' 原意是在它们之间插入 $string

这本身也没什么问题,但当 $string 的值以数字开头时?比如 string = "4fabc" 那么,此时的 $1 直接连接了 string 将被正则引擎当作 $14 而不是 $1 了,所以不仅 $1 消失了,连 string 中的 '4' 也被吃掉了~~

解决办法就是改用 ${1}, ${2} ....

这是实战过程碰到的问题,分享给大家了!
Posted on PHP by [阅读全文]

[2010-10-16] 其实用PHP模拟抓取HTTP内容,非常简单,实现方式也非常多,但本代码仍具备以下特色:
1. 纯PHP代码实现,不依赖任何其它第三方库或扩展,兼容PHP4.1起的所有版本。
2. 能设置或读取所有的HTTP头
3. 包含全功能并且带有一定智能的COOKIE处理,同一实例多次请求中会智能发送必要的COOKIE,COOKIE数据与外部文件交换(导入、导出)。
4. 可以自动处理 HTTP 301,302的跳转
5. 最可贵的一点是,支持 Keep-Alive 的HTTP连接,特别适合一次运行需求多次请求同一主机的内容情况,如采集。
6. 通过内置的Download()方法可以续传下载文件。
7. 支持通过POST方式上传任意个文件文件,发送数组字段等。
8. 支持SSL。

其它应用参见代码内的注释,英文注释兼容PHPDOC风格,英文表达可能不一定准确和合乎语法,多多见谅。
Posted on PHP by [阅读全文]