分类目录归档:数据库

以 MySQL 为主的 database

2.为什么要使用 CUBRID

先来问问您自己一个问题:

CUBRID is FREE & POWERFUL Database with ENTERPRISE level features您或您的公司是否需要一个具备企业级功能的免费并且功能强大的数据库系统?

如果您回答“是”,那么 CUBRID 可能就是您要的数据库解决方案!

免费 开源是当今世界的选择

使用 CUBRID 是免费的。它是一个根据通用公共许可证(GNU)条款发布的开源数据库管理系统。对于企业来说,CUBRID 可以使其显著地节约总拥有成本(TCO)。这是 85% 的公司在选择软件解决方案时最为看重的。不用花钱在其它数据库管理系统解决方案上,而是专注于使用 CUBRID 来提升服务。

功能强大 整洁的架构以及带有性能优势的丰富功能

您是否一直在找不受限的性能?

CUBRID 比其它流行的替代方案更快。它为高访问量网站设计和优化。有了 CUBRID,您不再需要担心数据的快速增长。其独特的多进程架构和多线程服务器实现能很好地处理数据增加和用户量的增长。不再限制数据库数量,表数量或记录数量。

Enjoy CUBRID’s competitive performance with Solid State Disk (SSD), the latest breakthrough in the data storage market. Take advantage of CUBRID’s optimizations such as Click Counter, fast concurrent insertions, query plan caching and query results caching to serve your high-traffic sites with minimal server resource usage.

Enterprise
unique features
for stability
and reliability

CUBRID provides enterprise level features such as High-Availability (HA), Database Sharding, Hot/Online Backup as well as Offline and Incremental Backups. Each can be scheduled and adjusted based on your needs.

You will have a database solution which supports distributed transaction, various replication methods such as online, synchronous/asynchronous, one-way, transaction-level, schema independent, chained or grouped replications. With High Availability (HA) feature, enjoy uninterruptible, 24/7 database server uptime. Database Sharding will make it seamless to distribute your data to multiple servers. And all in one CUBRID Database!

Want to learn more? Check out CUBRID’s Key Features.

用 UNION 解决 proftpd:mod_quotatab_sql.c 不能设置默认配额的问题

项目中碰到给注册用户分配一个 FTP 空间的需求,用户都是保存在 MYSQL 数据库中。

首先就想到用  proftpd + mod_sql 来解决。因为 proftpd 是久经考验的开源 FTP 服务器软件,而且代码模块清晰,必要时还可以自己修改代码。

其中的 quota 模块是基于“用户”定制,针对每个用户创建一条配额记录,却不能为全部用户设置一个默认的配额。这样对于一个已经有大量注册用户的项目颇为麻烦,又不想遍历用户列表为其创建一条配额记录。经实验可以用以下方法为每个用户默认分配 512MB 的空间限额:


SQLNamedQuery get-quota-limit SELECT "* FROM ftp_quota_limits WHERE name = '%{0}' AND quota_type = '%{1}' UNION SELECT '%{0}','user','false','soft',536870912,0,0,0,0,0 LIMIT 1"

通过 MySQL 的 UNION 加上 LIMIT 1 顺利解决。

1.关于 CUBRID

大体上,CUBRID 是一个全面的开源关系数据库管理系统且针对 WEB 应用做了高度优化,尤其是那些需要处理海量数据和巨大并发请求的复杂 WEB 服务。

www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers

具体而言,CUBRID 采用 C 语言编程实现。它是可扩展的,是一个与 MySQL 几乎完全兼容的高性能数据库系统。CUBRID 是一个具有独特架构和丰富功能的系统。其高可用性功能,同步/异步/半同步复制 (Replication),在线增量备份,和许多其它企业级功能使得 CUBRID 成为 WEB 服务的一个可靠解决方案。通过独特的功能优化,CUBRID 能够在更少的响应时间内处理更多的并行请求。

在线杂志 Method & Tools 最近发表了一个伟大故事般的关于CUBRID 介绍性文章。我们推荐你去阅读它。文章中简短地介绍了 CUBRID 的功能,有关如何快速入门,以及总结了一些有用和重要的建议。享受阅读吧!


为什么选择 CUBRID

CUBRID 开发始于 2006 年,如今它正变得非常受欢迎因为其清晰和为 WEB 应用高度优化的软件体系结构,以及丰富的数据库功能。它的代码库进行了全面的优化和严格的质量保证。CUBRID 被需要中小企业和大机构采用,后者有超过 10,000 台数据服务器。(参见:谁在使用 CUBRID

CUBRID,不同于其它数据库系统,没有企业版。它不区分社区和企业之间的许可策略。只有一个版本的 CUBRID 数据库管理系统,它遵循 GPLv2(通用公共许可证第二版)或更高版本。CUBRID 的这一开源策略对于客户端程序开发公司极为有利。他们不需要购买任何企业许可证或分出他们的收入。为机构在选择数据库管理系统替代方案时提供显著节约成本的机会。(参见完整文章:CUBRID 开源许可政策

一个基于 CUBRID 的数据库解决方案的总拥有成本(TCO)比其它替换方式显著节约硬件成本。CUBRID 的高性能,它的优化和完美塑性意味着机构可以为同样的并发用户数部署更便宜的硬件并且同样维持 7×24 不间断的服务。(注:本段意译可能有些不到位,见谅)

了解更多


谁在使用 CUBRID

在线社交游戏,著名的 基于 Web 的文字处理器,以及众多的 企业站点 均依托于 CUBRID 数据库。它还应用于一些 NHN 上最流行的 WEB 应用,韩国第一搜索门户拥有 3400 万用户每天 1700 万的独立访客。

此外,大型主机托管公司 Cafe24 和 Mireene,软件安全公司 ESTsoft,以及许多韩国地方高效都采用 CUBRID 管理他们的数据。

三分之二的 CUBRID 引用来自政府部门。韩国国税厅Korea Ministry of Public Administration and SecurityKorea Ministry of National DefenseBusan Transportation Corporation,以及韩国白宫都是采用 CUBRID 作为他们的数据库管理软件。试想一下,他们有多少敏感数据,他们有多少安全需求,他们都依托于 CUBRID。CUBRID 帮助许多机构以较低的拥有成本实现更大的效益和性能。

NHN Corporation Cafe24 MireeneESTsoft Korea National Tax Service Korea Ministry of Public Administration and Security Korea Ministry of National DefenseBusan Transportation Corporation Korea White House

查看 CUBRID 用户的完整列表


关于 CUBRID 的更多信息

您也可以在其它语言中找到关于 CUBRID 的更多信息。


下载 CUBRID

http://www.cubrid.org/downloads

CUBRID 真正的开源并且免费。请随意下载。

如果您有任何问题,请使用我们的 Q&A 站点,论坛,Twitter 或 Facebook。

 

原文地址:http://www.cubrid.org/about

CUBRID – 一款可用来代替 MySQL 的开源数据库

最近在学习 Yii2 的时候发现了一个新的开源数据库 cubrid,官网:http://www.cubrid.org 。

据官网称它是全功能的 SQL 关系数据库,而且特别为高并发高负荷的 WEB 站点而优化设计,提供了很多只有大型商业数据库才支持的功能(多机热备、分布式事备等)。官网的各类评测也都是直接瞄准 MySQL。

手上正准备重新架构一个新的 WEB 项目,看到 cubrid 的介绍有点心动,也提供 PHP 的访问扩展。但毕竟太新了,没发现有任何中文文资料和使用心得,打算接下来从官网的文档了解起来,顺便译成中文,与有兴趣的人士共同学习交流。

第一次翻译文档,有点紧张,英文水平有限不当之所在所难免;速度可能也不快,尽量争取吧!

[2009献礼] 发布MySQL-5.1.30的scws-1.x分词插件(090611最新修订)

** MySQL-5.1.30 中文分词插件 **

@Author: hightman
@Website: http://www.hightman.cn
@download: http://www.hightman.cn/down/myft-5.1.30-090611.tgz
注意: 20090611 最新修订, 修正停止服务器时, 释放停用词列表内存指针错误的bug.

[ 基本说明 ]

这是以 mysql-5.1.30 为环境开发制作的 mysql 全文检索分词插件。原则上应该适用整个 5.1.x 系列。

mysql 内置的全文检索仅支持 myisam 类型的表,默认的不支持中文分词。本插件依托 scws-1.0.1 分词系统,

scws 是由我开发的免费开源的中文分词系统,纯 C 开发的函数库。安装本插件必须先安装 scws-1.x。

安装本插件后,系统会注册一个名为 scws_parser 的分词器,可以在 mysql 中直接使用它,对于小型全文检索
需求,十分方便。

MyFT 系列之前曾发过布 5.1.11 和 4.0.27 的版本,旧版是简单的分词算法并不理想,建议改为本版。

[ 安装 & 测试]

1. 首先确定您在您的服务器上以源码方式安装了 mysql 5.1.x/ ,
假设您的 mysql-5.1.x 安装在 $prefix 目录 (通常为 /usr/local/mysql5)

务必是源码方式,里头一些自定义函数功能还需要对代码打补丁。

2. 接下来您必须先安装 scws-1.0.x 系统,相关的安装说明及下载文件请访问:
http://www.xunsearch.com/scws 假设安装在 $scws_dir 目录(建议为 /usr/local/scws)

注意要同步下载相应的词典档和规则集并放到 $scws_dir/etc 目录中去。
否则相应的字符集词典/规则集文件不存在的话则会自动采用默认的简易分词法。

3. 下载本插件代码:http://www.hightman.cn/down/myft-5.1.30-081231.tgz

4. 下载后将 tgz 文件复制到您安装的 mysql-5.1 的源代码所在目录里,然后解开:

tar xvzf myft-5.1.30-081231.tgz

解开后有一个 scws 目录被放到 plugin/ 目录里
还有一个 myft_scws_udf_5.1.30.patch 补丁文件及本文件 README.myft-hightman

5. 对 mysql 源码打补丁,以支持自定义函数中获取正确的字符集
在 mysql 源码目录执行 patch -p0 < myft_scws_udf_5.1.30.patch 即可

6. 打完补丁后需要重新编译并安装一下 mysql,这不需要重新 configure ,只需在该目录
执行 make ; make install 即可

7. 开始编译 scws 插件,进入到 mysql 源码目录里的 plugin/scws 目录

先配置:./configure –prefix=$prefix –with-scws=$scws_dir
其中 $prefix 为 mysql-5.1.x 的安装目录,$scws_dir 是 scws-1.x 的安装目录

配置完毕执行 make 和 make install
如果没有错误,至此已经安装完成了。

强烈建议您修改 my.cnf 在 [mysqld] 字段里加入 ft_min_word_len = 2
因为默认是 4,太长了点。

8. 这时您需要重启一下 mysql server,运行以下命令:

$prefix/share/mysql/mysql.server restart

9. 开始测试该插件,主要是全文索引的分词插件,下面以 utf8 编码进行测试。
您可以用命令行或 phpMyAdmin 之类的工具执行 SQL 命令,测试中是采用命令行。

1) 连接:mysql -u root -pxxxxx -h localhost

2) 设置字符集:SET NAMES ‘utf8′;

3) 选用测试库:USE test;

4) 安装插件(只需一次):INSTALL PLUGIN scws_parser SONAME ‘libftscws.so';

5) 建表测试(注意 with parser 指令):

CREATE TABLE `test_utf8` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) DEFAULT NULL,
`body` mediumtext,
PRIMARY KEY (`id`),
FULLTEXT KEY `ft_utf8` (`title`,`body`) WITH PARSER scws_parser
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `test_utf8` VALUES (1, ‘MySQL Tutorial’, ‘DBMS stands for DataBase …’);
INSERT INTO `test_utf8` VALUES (2, ‘How To Use MySQL Efficiently’, ‘After you went through a …’);
INSERT INTO `test_utf8` VALUES (3, ‘Optimising MySQL’, ‘In this tutorial we will show …’);
INSERT INTO `test_utf8` VALUES (4, ‘1001 MySQL Tricks’, ‘1. Never run mysqld as root. 2. …’);
INSERT INTO `test_utf8` VALUES (5, ‘MySQL vs. YourSQL’, ‘In the following database comparison …’);
INSERT INTO `test_utf8` VALUES (6, ‘MySQL Security’, ‘When configured properly, MySQL …’);
INSERT INTO `test_utf8` VALUES (7, ‘中国测试’, ‘这样可以吗’);
INSERT INTO `test_utf8` VALUES (8, ‘疯狂测中国测试’, ‘这样总应该可以吗’);
INSERT INTO `test_utf8` VALUES (9, ‘中国语言测试’, ‘这样又是行不行呢’);
INSERT INTO `test_utf8` VALUES (10, ‘我爱china’, ‘china是我的祖国’);

6) 测试查询:

— 第一句因为 mysql 出现的次数太多(默认超过1半)被忽略了
SELECT * FROM test_utf8 WHERE MATCH(title, body) AGAINST (‘mysql’);
SELECT * FROM test_utf8 WHERE MATCH(title, body) AGAINST (‘mysql’ IN BOOLEAN MODE);

SELECT * FROM test_utf8 WHERE MATCH(title, body) AGAINST (‘中国’);
SELECT * FROM test_utf8 WHERE MATCH(title, body) AGAINST (‘+中国 -疯狂’ IN BOOLEAN MODE);

10. 自定义函数 SCWS_SEGMENT(),将输入的字符串分词并返回以空格相连的字符串;

1) 创建函数(只需一次):CREATE FUNCTION scws_segment RETURNS STRING SONAME ‘libftscws.so';

2) 该函数接受至少一个参数,最多四个参数,依次表示:
<要分词的字符串,可为表达式> <复合分词参数 1~15(整型)> <自动将散字二字分词,1或0> <忽略标点符号,1或0>

3) 在返回结果太长(特别是开启 multi的情况下)会被裁断,以 … 结尾(不必担心!)

4) 测试:
mysql> SELECT SCWS_SEGMENT(‘我是中国人’);
+———————————+
| SCWS_SEGMENT(‘我是中国人’) |
+———————————+
| 我 是 中国人 |
+———————————+
1 row in set (0.00 sec)

mysql> SELECT SCWS_SEGMENT(title) FROM test_utf8;
+——————————-+
| SCWS_SEGMENT(title) |
+——————————-+
| MySQL Tutorial |
| How To Use MySQL Efficiently |
| Optimising MySQL |
| 1001 MySQL Tricks |
| MySQL vs . YourSQL |
| MySQL Security |
| 中国 测试 |
| 疯狂 测 中国 测试 |
| 中国 语言 测试 |
| 我爱 china |
+——————————-+
10 rows in set (0.00 sec)

11. 自定义函数 SCWS_TOPWORDS(),该函数返回字符串中的核心关键词列表;

1) 创建函数(只需一次):CREATE FUNCTION scws_topwords RETURNS STRING SONAME ‘libftscws.so';

2) 接受 1~3 个参数,分别为:<字符串> <词数(整数)> <词性包含或排除(字符串)>
词性多个之间用,分隔,以~开头则表示除这些词性以外。。。和 scws 用法一样。

3) 返回结果是由符合条件的关键词及其词性和次数组成,各词之间用空格连接
<词>/<词性>/<词数>

4) 测试:
mysql> SELECT SCWS_TOPWORDS(‘我是中国人,中国人很有志气’);
+———————————————————-+
| SCWS_TOPWORDS(‘我是中国人,中国人很有志气’) |
+———————————————————-+
| 中国人/n/2 志气/n/1 |
+———————————————————-+
1 row in set (0.00 sec)

mysql> SELECT SCWS_TOPWORDS(CONCAT(title, ‘ ‘, body)) FROM test_utf8;
+————————————————————————————————–+
| SCWS_TOPWORDS(CONCAT(title, ‘ ‘, body)) |
+————————————————————————————————–+
| DataBase/en/1 Tutorial/en/1 stands/en/1 MySQL/en/1 DBMS/en/1 for/en/1 |
| Efficiently/en/1 through/en/1 After/en/1 MySQL/en/1 went/en/1 How/en/1 Use/en/1 you/en/1 To/en/1 |
| Optimising/en/1 tutorial/en/1 MySQL/en/1 this/en/1 show/en/1 will/en/1 In/en/1 we/en/1 |
| Tricks/en/1 mysqld/en/1 MySQL/en/1 Never/en/1 1001/en/1 root/en/1 run/en/1 as/en/1 |
| comparison/en/1 following/en/1 database/en/1 YourSQL/en/1 MySQL/en/1 the/en/1 In/en/1 vs/en/1 |
| MySQL/en/2 configured/en/1 Security/en/1 properly/en/1 When/en/1 |
| 中国/ns/1 这样/r/1 测试/vn/1 可以/v/1 |
| 中国/ns/1 应该/v/1 疯狂/an/1 这样/r/1 测试/vn/1 可以/v/1 |
| 中国/ns/1 不行/a/1 语言/n/1 这样/r/1 测试/vn/1 又是/n/1 |
| china/en/2 祖国/n/1 我爱/n/1 |
+————————————————————————————————–+
10 rows in set (0.00 sec)

12. 全文检索中的停用词表,类似词典和规则集一样放在 $scws_dir/etc 中
分别为:stops.[$charset.]txt
rules.[$charset.]ini
dict.[$charset.]xdb

如果 $charset 没有指定,则默认即为 gbk
rules dict 采用 scws-1.x 的格式, stops.txt 用的是每行一个词即可,自行建立。

hightman,更多需要请访问 http://www.hightman.cn

2009 大家新年快乐!

MySQL Fulltext 总结与目录

[b][size=3]关于我的 MySQL FT 补丁[/size][/b]

MySQL 从 3.23.x 起就在 MyISAM 表引擎中支持全文检索,不够一直没有较好的支持中文。我就在自己的简易分词基础上,[color=#000000]在不影响 MySQL 的系统结构及其他功能的前提下,解决 MySQL 目前对中文全文检索无法正确支持的缺陷并优化 MySQL 对中文检索处理的性能。(目前本软件包支持根据词典进行简易的正向最大匹配分词、支持包括UTF-8、GBK、BIG5、EUC_TW … 在内的字符集)[/color][color=#f70909]该功能仅作用于 [b]MyISAM[/b] 引擎的表,除此之外均不支持。[/color]

[url=http://www.hightman.cn/bbs/forumdisplay.php?fid=8][b]专项支持论坛已开放[/b][/url]

[size=3][color=black][b]支持的版本族及下载地址[/b][/color][/size]
[color=#000000][/color]
[color=#000000]1. MySQL-4.0.27 完整安装包:[url=http://www.hightman.cn/down/mysql-4.0.27-hi4.tgz]下载地址[/url] [url=http://www.hightman.cn/bbs/viewthread.php?tid=15&extra=page%3D1]安装说明[/url] [url=http://www.hightman.cn/bbs/viewthread.php?tid=16&extra=page%3D1]使用说明[/url][/color]
[color=#000000]2. MySQL-4.0.x 补丁安装包: [url=http://www.hightman.cn/down/myft_patch_hi4.tgz]下载地址[/url] [url=http://www.hightman.cn/bbs/viewthread.php?tid=17&extra=page%3D1]安装说明[/url][/color]
[color=#000000]3. MySQL-5.1.11 中文分词插件:[url=http://www.hightman.cn/bbs/viewthread.php?tid=18&extra=page%3D1]下载地址及安装说明[/url] (5.1.13之后版本接口有小变动,需要自行修改才能用)[/color]

[color=#f00000]4. MySQL-5.1.30 结合 scws 的中文分词插件:[url=http://www.hightman.cn/bbs/showthread.php?tid=503]下载地址及安装说明[/url] (强烈推荐!!)[/color]
[color=#000000][/color]
[size=3][color=#000000][b]演示地址[/b][/color][/size]
[color=#000000][/color]
1. [url=http://www.hightman.cn/demo/s.php?q=%D6%D0%CE%C4]http://www.hightman.cn/demo/s.php?q=%D6%D0%CE%C4[/url] (BBS文章标题全文检索)
2. [url=http://www.hightman.cn/demo/s.php?source]http://www.hightman.cn/demo/s.php?source[/url] (实现的源代码, 可参考实现方式)
3. [url=http://www.dot66.net/]http://www.dot66.net[/url] (一百五十万条原BBS精华区数据全文检索)
[color=#000000][/color]
[size=3][color=#000000][b]后话及授权声明[/b][/color][/size]
[color=#000000][/color]
本软件补丁包秉承GNU(通用公共许可证)精神释出。这部分代码(支持中文等多字节字符集全文检索、分词)全部由本人(即 hightman)独立完成,本人保留一切权利。

[b]未经同意严禁修改、移植代码、商业用途、分支发布等。[/b][b]若您采用本软件包架站或作相关的公益研讨交流服务, 希望您可以告诉我, 并尽可能保留一个到本站的链接及相关说明。[/b]

本改进软件包不包含任何恶意代码,由于本人水平及精力有限, Bug及错误之处可能会存在。由此升级修改引起的数据丢失等后果本人不承担任何责任。关于本软件的bug报告、疑问以及建议或改进优化代码请直接在[url=http://www.hightman.cn/bbs/index.php]论坛[/url]中汇报或联络。

MySQL-5.1.11~12 全文检索分词插件

[b][size=3][color=black]概要及说明[/color][/size][/b]

经过不停的尝试和努力,以当时最新的 mysql 5.1.11-beta 为基础,制作的分词插件已经测试成功,现在发布如下。

mysql 5.1.x 本身的架构作了修改,所以增加分词直接以插件形式方式作就可以了,为了其中的 SEGMENT() 作为 UDF 来开发,但MySQL 本身的缺陷设计导致了自定义函数无法捕获参数的 charset info,于是为了“完美”起见,我还是对其中几个核心文件稍作了改动(不影响MYSQL的其它任何功能和架构)。

使用这个插件的效果是您可以在 MySQL 5.1.x 的 MyISAM 表中建立支持中文分词的全文索引,这个分词算法非常简单,基本上就是一个正向最大匹配法。特别要提醒的是 MySQL 5.1.13 及后续版本改动很大,该补丁可能无法直接使用,请注意。
[list][*]纯补丁安装包下载:[color=#800080][url=http://www.hightman.cn/down/ft-hightman-M5-0.1.tgz]http://www.hightman.cn/down/ft-hightman-M5-0.1.tgz[/url][/color] (17KB, 无词典)[*]完整安装文件下载:[color=#0000ff][url=http://www.hightman.cn/down/mysql-5.1.11-hi1.tgz]http://www.hightman.cn/down/mysql-5.1.11-hi1.tgz[/url][/color] (22MB, 无词典)[*]附加的词典档下载:[url=http://www.hightman.cn/down/wordlist-all.tgz]http://www.hightman.cn/down/wordlist-all.tgz[/url] (3.4MB 含utf8,gbk,big5)[/list][size=3][b]安装及使用方法[/b][/size]

这是一个简单的分词插件, 包括一个 FTPARSER, 和 1个 SEGMENT() 函数. (注: 以下示例中的 x 表示某个具体的版本号):
1. 下载取得文件包:
wget [color=#800080][url=http://www.hightman.cn/down/ft-hightman-M5-0.1.tgz]http://www.hightman.cn/down/ft-hightman-M5-0.1.tgz[/url][/color]
[color=#800080][/color]
2. 解压文件包
tar xvzf ft-hightman-M5-0.x.tgz
解压后您大概看到以下文件列表
ft-hightman-M5-0.x.patch
ft_hightman/

3. 将 ft_hightman/ 整个目录移入, mysql-5.1.x/plugin/ 目录

4. 将 ft-hightman-M5-0.x.patch 拷入 mysql-5.1.x/ 目录

5. 进入 mysql-5.1.x/ 目录, 运行下面命令针对旧文件打补丁
patch -p1 < ft-hightman-M5-0.x.patch

6. 仍在源码目录中, 依次运行如下命令
aclocal
automake
autoconf

7. 命令执行可能有点慢, 请耐心等待, 如有错误或警告请忽略它…

8. 按原先的方法编译、安装 mysql 5.x

9. 在编译时请增加: –with-plugins=fthightman 来开启该插件
./configure –prefix=/home/soft/mysql5 –with-charset=gbk –with-extra-charsets=all –with-plugins=fthightman
make
make install

10. 编译完后准备启动程序, 请在 $prefix/share/mysql 目录下建立要用的词典文件:

utf8 字符集对应的词典: wordlist-utf8.txt 和 stopwords-utf8.txt
gbk/gb2312 对应的词典: wordlist-gbk.txt 和 stopwords-gbk.txt
big5 字符集对应的词典: wordlist-big5.txt 和 stopwords-big5.txt
其它字符集请适当修改 plugin/ft_hightman/hightman_parser.c 中关于 wordlist[] 的定义
其中 wordlist-xxx.txt 的格式为每行一个词条信息, 由词和词频组成, 词与词频之间用\t或空格分开
而 stopwords-xxx.txt 是停用不作索引的词表, 则不需词频, 每行一个词.

提示: 如果您的数据库只用其中一种编码的话, 那么 utf8,gbk,big5只需要其中一种, 插件会根据当前的校正字符集(字段级)来采用相应的词典….

[b][color=#ff0000]特别提醒,如果您的mysql5安装在自定义目录, 请在启动 mysql 前或脚本里加上以下句话: ($prefix为安装目录,请勿照抄!!)
export LD_LIBRARY_PATH=$prefix/lib/mysql[/color][/b]

11. 用命令行方式进入 MySQL 界面, 执行如下命令安装插件:
INSTALL PLUGIN fthightman SONAME ‘myhightman.so';

12. 命行建立函数
CREATE FUNCTION segment RETURNS STRING SONAME ‘myhightman.so';

13. 测试简单的 SEGMENT() 看看:
SET NAMES ‘gbk';
SELECT SEGMENT(‘I am hightman,我是一个中国人’) AS result;
SET NAMES ‘utf8′;
SELECT SEGMENT(‘I am hightman,鎴戞槸涓€涓?腑鍥戒汉’) AS result;

14. 假设服务器字符集是 GBK, 这里我们测试 1个表, 以 UTF-8 字符集建表,同样可以试着改用 gbk 字符集建表看看效果
CREATE TABLE `test_utf8` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) DEFAULT NULL,
`body` mediumtext,
PRIMARY KEY (`id`),
FULLTEXT KEY `ft_utf8` (`title`,`body`) [b][color=#ff0000]WITH PARSER fthightman[/color][/b]
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `test_utf8` VALUES (1, ‘MySQL Tutorial’, ‘DBMS stands for DataBase …’);
INSERT INTO `test_utf8` VALUES (2, ‘How To Use MySQL Efficiently’, ‘After you went through a …’);
INSERT INTO `test_utf8` VALUES (3, ‘Optimising MySQL’, ‘In this tutorial we will show …’);
INSERT INTO `test_utf8` VALUES (4, ‘1001 MySQL Tricks’, ‘1. Never run mysqld as root. 2. …’);
INSERT INTO `test_utf8` VALUES (5, ‘MySQL vs. YourSQL’, ‘In the following database comparison …’);
INSERT INTO `test_utf8` VALUES (6, ‘MySQL Security’, ‘When configured properly, MySQL …’);
INSERT INTO `test_utf8` VALUES (7, ‘中国测试’, ‘这样可以吗’);
INSERT INTO `test_utf8` VALUES (8, ‘疯狂测中国测试’, ‘这样总应该可以吗’);
INSERT INTO `test_utf8` VALUES (9, ‘中国语言测试’, ‘这样又是行不行呢’);
INSERT INTO `test_utf8` VALUES (10, ‘我爱china’, ‘china是我的祖国’);
SELECT * FROM test_utf8 WHERE MATCH(title,body) AGAINST (‘中国’);
SELECT * FROM test_utf8 WHERE MATCH(title,body) AGAINST (‘+中国 -疯狂’ IN BOOLEAN MODE);
SELECT SEGMENT(title) FROM test_utf8;

MySQL-4.0.x(fulltext) 源码修订 patch 文件包

有些朋友可能由于 MySQL 版本号不匹配导致麻烦,现发布一个针对 4.0.27 生成的 patch 文件供用户自己打补丁,要求 Linux/BSD 环境,并配备了 autoconf,automake 等工具,否则也不行。由于 MySQL 4.1 及以上版本引入了一些其它新特性,建议不要直接打补丁,可能也不会成功。:p

补丁下载地址:[color=#800080][url=http://www.hightman.cn/down/myft_patch_hi4.tgz]http://www.hightman.cn/down/myft_patch_hi4.tgz[/url] [/color]
[color=black](约1MB MD5: da2dbdb50bcaf6d50362e0c71e610b0e)[/color]
[color=#800080][/color]
以下是里面的 README.patch 内容:
———————————————————————–
0. 基本要求, 必须在 Linux 或 FreeBSD 等 Unix-Like 的系统上而且已经安装了 GNU 软件开发包, gcc, autoconf, automake 等

1. 下载并解压 myft_patch_hi*.tgz 位于 mysql-4.0.x 源码包同级目录中如下:
myft_patch_hi4/
mysql-4.0.27/

2. 执行补丁,请按顺序来
1) cp myft_patch_hi4/README.hightman_mbft mysql-4.0.27/
2) cp myft_patch_hi4/ft_wordlist.c mysql-4.0.27/myisam/
3) cp myft_patch_hi4/*-gbk.txt mysql-4.0.27/support-files/
3) cd mysql-4.0.27/
4) patch -p1 < ../myft_patch_hi4/myft_4.0.27_hi4.patch

屏幕显示大概如下:
-------------------------------------------------------------------
[hightman@sata mysql-4.0.27]$ patch -p1 < ../myft_patch_hi4/myft_4.0.27_hi4.patch
patching file acconfig.h
patching file configure.in
patching file sql/item_strfunc.cc
patching file sql/item_strfunc.h
patching file sql/lex.h
patching file sql/mysqld.cc
patching file sql/set_var.cc
patching file sql/sql_yacc.yy
patching file myisam/Makefile.am
patching file myisam/ft_boolean_search.c
patching file myisam/ft_nlq_search.c
patching file myisam/ft_parser.c
patching file myisam/ft_static.c
patching file myisam/ftdefs.h
patching file myisam/mi_panic.c
patching file myisam/myisamchk.c
patching file include/ft_global.h

3. 仍在 mysql-4.0.27/ 目录中
执行:
1) aclocal
2) autoheader
3) automake
4) autoconf

4. 完毕后补丁升级工作就完成啦, 在 mysql-4.0.27/ 目录中按 mysql-4.0.x 的安装方式进行就可以了
./configure --with-charset=gb2312 --with-extra-charsets=all --enable-hightman-mbft
make
make install
后面参照 README.hightman_mbft 进行

5. 补丁生成命令:
./gen_patch.sh

—————————
2006/09/10 hightman(马明练)