php利用scws实现mysql全文搜索功能的方法
本文实例讲述了php利用scws实现mysql全文搜索功能的方法。分享给大家供大家参考。具体方法如下:
scws这样的中文分词插件比较不错,简单的学习了一下,它包涵一些专有名称、人名、地名、数字年代等规则集合,可以直接将语句按这些规则分开成一个一个关键词,准确率在90%-95%之间,按照安装说明把scws的扩展放入php的扩展目录里,下载规则文件和词典文件,并在php配置文件中引用它们,就可以用scws进行分词了.
1)修改php扩展代码以兼容支持php5.4.x
2)修正php扩展中scws_get_tops的limit参数不允许少于10的问题
3)libscws增加scws_fork()从既有的scws实例产生分支并共享词典/规则集,主要用于多线程开发.
4)新增部分版本的win32的dll扩展
PHP实例代码如下:
<?php //实例化分词插件核心类 $so=scws_new(); //设置分词时所用编码 $so->set_charset('utf-8'); //设置分词所用词典(此处使用utf8的词典) $so->set_dict('/path/dict.utf8.xdb'); //设置分词所用规则 $so->set_rule('/path/rules.utf8.ini'); //分词前去掉标点符号 $so->set_ignore(true); //是否复式分割,如“中国人”返回“中国+人+中国人”三个词。 $so->set_multi(true); //设定将文字自动以二字分词法聚合 $so->set_duality(true); //要进行分词的语句 $so->send_text(“欢迎来到火星时代IT开发”); //获取分词结果,如果提取高频词用get_tops方法 while($tmp=$so->get_result()) { print_r($tmp); } $so->close(); ?>
注:如以上例子,输入的文字,词典,规则文件这三者的字符集必须统一,另外mysql4.XX有的是不支持中文全文搜索的,可以存入关键字对应的区位码以方便全文搜索.
版本列表
版本类型平台性能其它
SCWS-1.1.xC代码*Unix*/*PHP*准确:95%,召回:91%,速度:1.2MB/sec
PHP扩展分词速度:250KB/sec[下载][文档][安装说明]
php_scws.dll(1)PHP扩展库Windows/PHP4.4.x准确:95%,召回:91%,
php_scws.dll(2)PHP扩展库Windows/PHP5.2.x准确:95%,召回:91%,
php_scws.dll(3)PHP扩展库Windows/PHP5.3.x准确:95%,召回:91%,
php_scws.dll(4)PHP扩展库Windows/PHP5.4.x准确:95%,召回:91%,
PSCWS23PHP源代码不限(不支持UTF-8)准确:93%,召回:89%,
PSCWS4PHP源代码不限准确:95%,召回:91%,
希望本文所述对大家的php程序设计有所帮助。