1. PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索
  2. 中文分词:

a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robbe.html

i.  Robbe完整版本下载:Robbe完整版本(PHP测试程序, 开发帮助文档, WinNT下php各版本的dll文件)下载: http://code.google.com/p/robbe(“谷歌”无法使用)

b) SCWS(简易中文分词) 基于HTTP/POST的分词 : http://www.xunsearch.com/scws/api.php

c)   MFSOU中文分词PHP扩展: http://php.mfsou.com/(网站打不开,无法访问)

综上:只能使用SCMS中文分词了。

3. 全文检索

a)  MySQL全文检索(支持英文分词)

i.  http://www.jcodecraeer.com/a/shujuku/2012/0728/324.html

ii.  需要进一步学习MySQL全文检索

b) Sphinx:基于SQL的全文检索引擎

i.  http://sphinxsearch.com/downloads/

ii. Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。

c) 迅搜:sunsearch: http://www.xunsearch.com/doc/index

i. 目前后端服务器只支持 UNIX (含Linux/BSD/MacOS等) 操作系统,前端开发包只支持 PHP 语言。

ii. Xunsearch 可以帮助您建立门户/垂直搜索/论坛搜索/WEB站内搜索/文档文献资料搜索等。

php_scws.dll/Win32 安装说明

安装:http://www.xunsearch.com/scws/docs.php#instdll

1. 根据您当前用的 PHP 版本,下载相应已编译好的 php_scws.dll 扩展库。
目前支持 PHP-4.4.x 和 PHP-5.2.x 系列,下载地址分别为: php-4.4.x: http://www.xunsearch.com/scws/down/php-4.4.x/php_scws.dll
php-5.2.x: http://www.xunsearch.com/scws/down/php-5.2.x/php_scws.dll
php-5.3.x: http://www.xunsearch.com/scws/down/php-5.3.x/php_scws.dll 2. 将下载后的 php_scws.dll 放到 php 安装目录的
extensions/ 目录中去(通常为:X:/php/extensions/或 X:/php/ext/)。 3. 建立一个本地目录放规则集文件和词典文件,建议使用:C:/program files/scws/etc 4. 从 scws 主页上下载词典文件,解压后将 *.xdb 放到上述目录中
词典系列:http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2
http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
http://www.xunsearch.com/scws/down/scws-dict-cht-utf8.tar.bz2 5. 从 scws 主页上下载规则集文件,解压后将 *.ini 放到第 3 步建立的目录
规则集文件压缩包:http://www.xunsearch.com/scws/down/rules.tgz
解压后有三个文件分别为 rules.ini rules.utf8.ini rules_cht.utf8.ini
将三件文件拷到第 3 步所述的目录中 6. 修改 php.ini 通常位于 C:/windows/php.ini 或 C:/winnt/php.ini 之类的目录,
在 php.ini 的末尾加入以下几行: [scws]
;
; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空,
; 再把 php_scws.dll 指定为绝对路径。
;
extension = php_scws.dll
scws.default.charset = gbk
scws.default.fpath = "c:/program files/scws/etc" 5. 重开 web 服务器即可完成。 scws添加新词语(添加自定义的词语)
思路:利用scws的工具,把现有词库导出为txt,然后修改txt,再把txt转换成xdb文件(这个导入几天下来也没有成功)
SCWS提供了词库XDB导出导入词库的工具下载后解压至任意文件夹,我解压至php安装目录下。在命令行下进入您PHP的安装目录,我的目录是”D:/wampServer/wamp/bin/php/php-5.3.29-Win32-VC9-x86“。

dict.txt中文本格式为:

  # WORD    TF    IDF    ATTR

  当机立断    14.01    8.10    i

  #开头的行是注释。每行是一个词。每个词分为四部分,WORD列是词本身,TF和IDF列是词权重,ATTR列是词性。

  在这里要解释下TF和IDF的意思,它们合起来称作TF-IDF(term frequency– inverse document frequency),是一种用于资讯检索与资讯探勘的常用加权技术,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用分类。说起来很不好理解,其实也不需要理解,SCWS也提供了新词生词的TF/IDF计算器,可以自动获得词语的权重值。

  ATTR是词性,也就是标示词语是名字、动词、形容词等等词性的。详细的词性标示方法请看SCWS的说明:词典词性标注详解

  步骤1:执行命令行,将词库先导出来,生成一个文本文件(dict.txt)
命令格式为:php dump_xdb_file.php <要导出的.xdb文件> [要存入的文本文件]
我的命令语句是(路径跳转到php安装路径下d:,cd D:/wampServer/wamp/bin/php/php-5.3.29-Win32-VC9-x86):
php dump_xdb_file.php C:/"Program Files"/scws/etc/dict.xdb d:/123.txt
几秒后在d:目录下我就获得了导出的纯文本文件123.txt。
导入词库命令: 命令格式为:php make_xdb_file.php <要生成的.xdb> [导入的文本文件]
   php make_xdb_file.php C:/"Program Files"/scws/etc/dict2.xdb d:/123.txt

  生成xdb文件的过程需要比较长的时间,请耐心等待,如下图

我遇到问题(目前还没有解决):

我用scws中文分词自定义词库导入出错如下:

Notice: Undefined index :part in make_xdb_file.php on line 92

Notice: Undefined index :tf in make_xdb_file.php on line 93[/color]

修改了make_xdb_file.php 文件90行foreach(){},“{}”中内容为:[php]

foreach ($rec[$k] as $w => $v)

{

$flag = (isset($v['tf']) ? 0x01 : 0);

if (isset($v['part'])) {

if($v['part']){

$flag |= 0x02;

}

}

$tf=(isset($v['tf'])) ? $v['tf']:'' ;

$idf=(isset($v['idf'])) ? $v['idf']:'';

$attr=(isset($v['attr'])) ? $v['attr']:'';

$data = pack('ffCa3', $tf, $idf, $flag, $attr);

//$data = pack('ffCa3', $v['tf'], $v['idf'], $flag, $v['attr']);

$xdb->Put($w, $data);

$cnt++;

}[/php]

上面问题解决,但cmd中运行到Inserting [63/64] ... 33434 Records saved.又开始出现问题:(xdb.class.php文件):[color=#FF4500]Notice:User of undefined constant key-assumed 'key' in xdb.class.php(447):runtime-created function on line 1[/color]

不知道如何解决。

问题截图:

打开php.ini 文件,找到date.timezone =PRC。去掉date.timezone前面的分号“;”。

修改了make_xdb_file.php 文件90行foreach(){},“{}”中内容为:

 foreach ($rec[$k] as $w => $v)

         {

                   $flag = (isset($v['tf']) ? 0x01 : 0);

                   if (isset($v['part'])) {

                       if($v['part']){

                         $flag |= 0x02;

                            }

                   }

                   $tf=(isset($v['tf'])) ? $v['tf']:'' ;

                   $idf=(isset($v['idf'])) ? $v['idf']:'';

                   $attr=(isset($v['attr'])) ? $v['attr']:'';

                   $data = pack('ffCa3', $tf, $idf, $flag, $attr);

                   //$data = pack('ffCa3', $v['tf'], $v['idf'], $flag, $v['attr']);

                   $xdb->Put($w, $data);

                   $cnt++;

         }

又出现新问题:

这个问题还没有解决。导入词库失败。


参考:http://blog.sina.com.cn/s/blog_54fd6b710101as5c.html

http://blog.sina.com.cn/s/blog_7d2117080102uyeu.html

PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))的更多相关文章

  1. MySQL数据库开发规范-EC

    最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是 ...

  2. 微渠道发展 BAE交通运输平台和java呼声,微信mysql数据库开发实例 --图文开发教程

    持续更新 BAE java开展mysql数据库 图文教程 BAE java语言发展mysql源码下载: 目前微信的发展.BAE开展.java开展.mysql教程开发非常,的介绍基于BAE平台.java ...

  3. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  4. MySQL 数据库开发的 36 条军规

    MySQL 数据库开发的 36 条军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 ...

  5. MySQL数据库的优化(上)单机MySQL数据库的优化

    MySQL数据库的优化(上)单机MySQL数据库的优化 2011-03-08 08:49 抚琴煮酒 51CTO 字号:T | T 公司网站访问量越来越大,导致MySQL的压力越来越大,让我们自然想到的 ...

  6. Navicat for Mysql连接mysql数据库时出现 2003-Can't connect to MySql server on 'localhost'(10061)

    一.环境:linux服务器下 二.问题:在windows7下使用Navicat for Mysql连接mysql数据库时出现 2003-Can't connect to MySql server on ...

  7. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  8. Lucene 03 - 什么是分词器 + 使用IK中文分词器

    目录 1 分词器概述 1.1 分词器简介 1.2 分词器的使用 1.3 中文分词器 1.3.1 中文分词器简介 1.3.2 Lucene提供的中文分词器 1.3.3 第三方中文分词器 2 IK分词器的 ...

  9. Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词

    一.Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在p ...

随机推荐

  1. 看美剧英文字幕学英语的利器——“深蓝英文字幕助手”简介

    我从初中开始基本上就是一个英语很烂的人,数理化再好有什么用,工作了,结果发现数理化都没啥用,最有用的还是当年学的最烂的英语.于是在2011年年底开始了学习英语的课程,在学习的过程中,外教经常会放英剧美 ...

  2. Use Excel Pivot Table as a BI tool

    Normally, we have created a table, view in database or cube in SSAS, user can use Excel as a BI tool ...

  3. android动态注册监听网络变化异常

    在使用广播接收器监听网络变化的时候,在AndroidManifest.xml中加入<user-permission android:name="android.permission.A ...

  4. X264库直接压缩BITMAP格式数据

    最近帮朋友看了下X264压缩视频,主要参考了雷霄骅(leixiaohua1020)的专栏的开源代码: http://blog.csdn.net/leixiaohua1020/article/detai ...

  5. 地图编辑器V1

    功能:1. 拖放地图元素至地图编辑器中2. 可设置参考图3. 背景图可平铺,中央,左上角等放置4. 地图上的元素可旋转,可删除,可拖动5. 保存地图数据时同时生成XML格式的地图信息 -------- ...

  6. C语言数据库编程

    ----摘自个人C语言数据库项目报告 3.4逻辑结构的SQL语句实现 创建基本表: 3.4-1建立商品表: create table goods(goods_id int primary key,go ...

  7. 关于Leetcode上二叉树的算法总结

    二叉树,结构很简单,只是比单链表复杂了那么一丢丢而已.我们先来看看它们结点上的差异: /* 单链表的结构 */ struct SingleList{ int element; struct Singl ...

  8. [译] libvirt 虚机的生命周期 (Libvirt Virtual Machine Lifecycle)

    翻译自:http://wiki.libvirt.org/page/VM_lifecycle   这篇文章描述虚机生命周期的基本概念.其目的在于在一篇文章中提供完整的关于虚机创建.运行.停止.迁移和删除 ...

  9. [书目20160612]思考软件,创新设计——A段架构师的思考技术

    高焕堂:在校时期主修统计学和信息管理,将近40年软件开发生涯.工作于亚洲和欧美各地区,专精于商业策略思考和系统架构设计.近年来,热衷于<it+设计>教育顾问和产品开发. 第1章  商业思维 ...

  10. Java Web之JSP技术

    JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比htm ...