[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 大家新年快乐!

[2009献礼] 发布MySQL-5.1.30的scws-1.x分词插件(090611最新修订)》上有23条评论

  1. qazwer

    有一个问题,安装插件后,每次重启mysql都需要 Repair by sorting 全文索引表,由于数据量很大,会持续30分钟以上,导致表无法访问,请问有没有解决办法?

    回复
  2. aaronyou

    按照文章方法编译完整出错信息如下: 请指引
    mysql-5.1.30.tar.gz scws-1.0.3.tar.bz2 myft-5.1.30-081231.tgz
    Red Hat Enterprise Linux AS release 3 (Taroon Update 6)
    gcc version 3.2.3 20030502

    C -DPIC -o .libs/libftscws_la-plugin_scws.o
    In file included from ../../include/my_global.h:85,
    from plugin_scws.c:20:
    ../../include/my_config.h:1065:1: warning: “PACKAGE” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    ../../include/my_config.h:1071:1: warning: “PACKAGE_NAME” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    ../../include/my_config.h:1074:1: warning: “PACKAGE_STRING” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    ../../include/my_config.h:1077:1: warning: “PACKAGE_TARNAME” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    ../../include/my_config.h:1080:1: warning: “PACKAGE_VERSION” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    ../../include/my_config.h:1202:1: warning: “VERSION” redefined
    plugin_scws.c:1:1: warning: this is the location of the previous definition
    In file included from ../../storage/myisam/fulltext.h:20,
    from ../../storage/myisam/ftdefs.h:20,
    from plugin_scws.c:25:
    ../../storage/myisam/myisamdef.h:216: syntax error before “pthread_rwlock_t”
    ../../storage/myisam/myisamdef.h:216: warning: no semicolon at end of struct or union
    ../../storage/myisam/myisamdef.h:221: syntax error before “mmap_lock”
    ../../storage/myisam/myisamdef.h:221: warning: data definition has no type or storage class
    ../../storage/myisam/myisamdef.h:222: warning: data definition has no type or storage class
    ../../storage/myisam/myisamdef.h:235: syntax error before “MYISAM_SHARE”
    ../../storage/myisam/myisamdef.h:235: warning: no semicolon at end of struct or union
    ../../storage/myisam/myisamdef.h:304: syntax error before ‘}’ token
    ../../storage/myisam/myisamdef.h:570: syntax error before ‘*’ token
    ../../storage/myisam/myisamdef.h:759: syntax error before “MYISAM_SHARE”
    ../../storage/myisam/myisamdef.h:762: syntax error before ‘*’ token
    ../../storage/myisam/myisamdef.h:763: syntax error before ‘*’ token
    make: *** [libftscws_la-plugin_scws.lo] Error 1

    回复
  3. aaronyou

    [quote=’hightman’ pid=’3179′ dateline=’1245746057′]
    从错误看是你的MYSQL代码都不对吧, 线程库都不支持? 原先自己编译mysql 5.1.30能正确么?
    [/quote]

    谢谢大大的回复
    该mysql版本 可以使用,新加了swcs就没办法编译通过了,要么我再下一个其他版本 试下,或者您告诉我下 您的mysql下载地址,我试下

    非常感谢

    回复
  4. etbobhwang

    想請問一下,我mysql 用 5.1.36 版 myft-5.1.30-090611.tgz
    在 安裝 及裝 patch 都沒問題,但是 make myft-5.1.30 是 都無法通過.
    是否是 mysql 版本的問題 or linux 版本的問題,我用 cenos 4.7 的
    另外可否請教一下,您用那一版的os

    我改用 centos 5.3 就ok 了, 再請教一個問題,我用繁體的 utf8 但簡索不出任何東西,請問要注意那一點

    謝謝

    回复
  5. hightman

    [quote=’etbobhwang’ pid=’3244′ dateline=’1247803794′]
    想請問一下,我mysql 用 5.1.36 版 myft-5.1.30-090611.tgz
    在 安裝 及裝 patch 都沒問題,但是 make myft-5.1.30 是 都無法通過.
    是否是 mysql 版本的問題 or linux 版本的問題,我用 cenos 4.7 的
    另外可否請教一下,您用那一版的os
    [/quote]

    原则上应该没有问题, 但MYSQL代码更改比较频繁, 我用的测试平台是 Ubuntu 8.1和FreeBSD 6.2,

    有错的话请将您的配置选项&错误讯息贴出来看看,如果是长篇的提示一些头文件错误恐怕是代码不兼容…

    回复
  6. etbobhwang

    [quote=’hightman’ pid=’3250′ dateline=’1247840543′]
    [quote=’etbobhwang’ pid=’3244′ dateline=’1247803794′]
    想請問一下,我mysql 用 5.1.36 版 myft-5.1.30-090611.tgz
    在 安裝 及裝 patch 都沒問題,但是 make myft-5.1.30 是 都無法通過.
    是否是 mysql 版本的問題 or linux 版本的問題,我用 cenos 4.7 的
    另外可否請教一下,您用那一版的os
    [/quote]

    原则上应该没有问题, 但MYSQL代码更改比较频繁, 我用的测试平台是 Ubuntu 8.1和FreeBSD 6.2,

    有错的话请将您的配置选项&错误讯息贴出来看看,如果是长篇的提示一些头文件错误恐怕是代码不兼容…
    [/quote]

    謝謝您的回覆, 我改用cenos 5.3 就ok 了

    回复
  7. etbobhwang

    請教一下,ns ,a ,r 這些分詞有對照表嗎?

    中国/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 |

    另外,請問一下,如果我用 繁體的 utf-8 是否將, /usr/local/scws/etc/ 下的, rules_cht.utf8.ini
    dict_cht.utf8.xdb 改成 rules.utf8.ini和dict.utf8.xdb

    ft_wordlist_charset = utf8
    ft_min_word_len = 2
    ft_nlq_match_percent = 80
    ft_nlq_match_maxnum = 5000
    需要加入 my.cnf 嗎?
    謝謝

    回复
  8. Mistruster

    mysql-5.1.30 Windows 下可以编译通过,但运行 INSTALL PLUGIN scws_parser SONAME ‘scws.dll’;报错
    ==========================================

    key_buffer_size=134217728
    read_buffer_size=20971520
    max_used_connections=1
    max_threads=151
    threads_connected=1
    It is possible that mysqld could use up to
    key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 2122680 K
    bytes of memory
    Hope that’s ok; if not, decrease some variables in the equation.

    thd: 0x916ef88
    Attempting backtrace. You can use the following information to find out
    where mysqld died. If you see no messages after this, something went
    terribly wrong…
    100062FD scws.dll!_xdb_nget()
    1000635F scws.dll!_xdb_nget()
    1000645B scws.dll!_xdb_to_xtree()
    100055F8 scws.dll!_xdict_open()
    1000239E scws.dll!_scws_set_dict()
    10001417 scws.dll!ftscws_rec_load()[plugin_scws.c:269]
    10001591 scws.dll!scws_parser_plugin_init()[plugin_scws.c:378]
    004ECE27 mysqld.exe!???
    004E38B5 mysqld.exe!???
    004E3DE0 mysqld.exe!???
    Trying to get some variables.
    Some pointers may be invalid and cause the dump to abort…
    thd->query at 091A5460=INSTALL PLUGIN scws_parser SONAME ‘scws.dll’
    thd->thread_id=1
    thd->killed=NOT_KILLED
    The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
    information that should help you find out what is causing the crash.

    ==============
    mysqld.exe 中的 0x100062fd (scws.dll) 处未处理的异常: 0xC0000005: 写入位置 0x0a94c000 时发生访问冲突 。
    好像是卡在 _xdb_to_xtree_node() 函数中 value = pmalloc(xt->p, ptr->len – voff);的后面 memcpy(value, buf + voff, ptr->len – voff);的前面

    在 voff = buf[16] + 17; 这句后面加上:

    [b] if(ptr->len < voff) return; [/b] 居然通过了,可以使用了! 不过 SCWS_PREFIX 是写的是绝对路径,不懂怎么能使用 my.ini 中的配置来调dict.xdb

    回复
  9. Mistruster

    Win32 版本的scws.dll For MySQL 5.1.39
    [attachment=1192]

    不知道怎么获取配置my.ini中的basedir目录 🙁
    所以需要安装时使用插入数据表的方法:
    INSERT INTO mysql.plugin VALUES (‘scws_parser’, ‘scws.dll’);
    INSERT INTO mysql.func VALUES (‘scws_segment’, 0, ‘scws.dll’, ‘function’);
    INSERT INTO mysql.func VALUES (‘scws_topwords’, 0, ‘scws.dll’, ‘function’);

    然后把scws.dll放到mysql的plugin目录
    把 dict.gbk.xdb rules.gbk.ini 复制到 x:/mysql_5.1.39/plugin/etc
    然后在 my.ini 中设置
    scws_parser_basedir=x:/mysql_5.1.39/plugin/etc
    重启 MySQL

    回复
  10. hightman

    mysql的SCWS插件是通过外部动态链接libscws的,所以它的库配置取决于scws 的配置.

    而关于xdb部分, 原则上讲是不应该出现 voff >= ptr->len 的情况, 目前我也不清楚是什么情况下出现, 也许是 xdb 文件损坏也许是其它原因.

    你加上的判断是合理的也不会影响其它的, 所以我也把这行代码加到了最新的 scws-1.0.4中了. 谢谢

    回复
  11. godog

    OS :6.4-STABLE FreeBSD
    MySQL 5.1.36

    打补丁 出現的信息:

    patch -p0 < myft_scws_udf_5.1.30.patch Hmm... Looks like a new-style context diff to me... The text leading up to this was: -------------------------- |*** include/mysql_com.h.orig 2008-12-31 14:12:53.000000000 +0800 |--- include/mysql_com.h 2008-12-31 14:15:20.000000000 +0800 -------------------------- Patching file include/mysql_com.h using Plan A... Hunk #1 succeeded at 437. Hunk #2 succeeded at 454. Hmm... The next patch looks like a new-style context diff to me... The text leading up to this was: -------------------------- |*** sql/item_func.cc.orig 2008-12-31 14:15:42.000000000 +0800 |--- sql/item_func.cc 2008-12-31 14:36:36.000000000 +0800 -------------------------- Patching file sql/item_func.cc using Plan A... Hunk #1 succeeded at 2880 (offset 12 lines). Hunk #2 succeeded at 2900 (offset 12 lines). Hunk #3 succeeded at 2933 (offset 12 lines). Hunk #4 succeeded at 3008 (offset 12 lines). Hunk #5 succeeded at 3072 (offset 12 lines). Hmm... The next patch looks like a new-style context diff to me... The text leading up to this was: -------------------------- |*** include/mysql.h.pp.orig 2008-12-31 17:21:21.000000000 +0800 |--- include/mysql.h.pp 2008-12-31 17:21:57.000000000 +0800 -------------------------- Patching file include/mysql.h.pp using Plan A... Hunk #1 succeeded at 110. Hunk #2 succeeded at 122. ------------------------------------------------- cd plugin/scws 编译 mysql plugin ./configure --prefix=/usr/local/mysql5136/ --with-scws=/usr/local/scws/ 正常... make 发生錯誤... /usr/local/bin/bash ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"plugin_scws\" -DPACKAGE_TARNAME=\"plugin_scws\" -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"plugin_scws\ 0.1\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"plugin_scws\" -DVERSION=\"0.1\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -I. -I../../include -I../../ -DMYSQL_DYNAMIC_PLUGIN -g -O2 -I/usr/local/scws//include -DSCWS_PREFIX=\"/usr/local/scws/\" -MT libftscws_la-plugin_scws.lo -MD -MP -MF .deps/libftscws_la-plugin_scws.Tpo -c -o libftscws_la-plugin_scws.lo `test -f 'plugin_scws.c' || echo './'`plugin_scws.c ./libtool: line 460: CDPATH: command not found ./libtool: line 1138: func_opt_split: command not found libtool: Version mismatch error. This is libtool 2.2.6, but the libtool: definition of this LT_INIT comes from an older release. libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6 libtool: and run autoconf again. *** Error code 63 [color=#FF0000]mysql 5.1.30 則无此錯誤 请问补丁.. 5.1.30 之外的 mysql 是否不能用? [/color]

    回复
  12. yc2266

    为什么configure mysql 插件的时候一直出现 找不到 scws.h 这个头文件啊?
    我的的确确是安装在了 /usr/local/scws这呀
    看了一下编译测试程序
    gcc -o test -I/usr/local/scws/include -L/usr/local/scws/lib test.c -lscws -Wl,–rpath -Wl,/usr/local/scws/lib
    是否在 configure 的时候也要加上?怎么加?
    再补充一下:./configure –prefix=/usr/local/mysql –with-scws=/usr/local/scws
    mysql 已经正常运行

    回复
  13. hightman

    可能你装了最新的SCWS,最新的SCWS的头文件移到了新目录
    原来是 /usr/local/scws/include/scws.h
    新版变成了 /usr/local/scws/include/scws/h

    最简单的解决 方案是你去 /usr/local/scws/include/scws/ 下把 *.h 拷一份到 /usr/local/scws/include/

    回复
  14. yc2266

    问一个问题,在搜索的时候:
    sql : SELECT * FROM TABLE WHERE MATCH(a_c,b_c) AGAINST(‘测试’)
    返回的结果是否根据相似度的高低进行排序了?
    我在使用过程中发现好像没有按照相似度高低显示
    我同时在表中插入了两条数据
    第一条是“测试” 第二条“我的测试” 结果发现两条都搜出来了但是没有排序![hr]
    SELECT * FROM TABLE WHERE MATCH(a_c,b_c) AGAINST(‘测试’ IN BOOLEAN MODE);[hr]
    应该是没有了,只好自己写一个相似度比较的东西了!

    回复
  15. rickyj118

    hightman,您好,问一个事情,我想在mysql的从数据库上安装这个插件。主数据库是innodb。 会不会有问题?

    回复
  16. newli

    ubuntu linux
    到了安装步骤7出错了

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

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

    ——————–
    目录都是对的
    scws下载的是最新的1.1.8,mysql版本是5.1.59

    出错提示如附件的图片

    请问版主,这该如何是好

    回复
  17. hightman

    你最好能稍改一下代码,因为新的 scws.h 放在 /usr/local/scws/include/scws/scws.h 了而不是以前的 /usr/local/scws/include/scws.h

    如果你实在懒得动就把 /usr/local/scws/include/scws/*.h 复制一份到 /usr/local/scws/include/

    回复
  18. marguerite

    Hi,海鳗,

    这个插件依然可用吗?(mysql 补丁是没过时的)

    我做了 openSUSE 的官方包准备用在 bbs.suse.org.cn 的 mariadb 后端搜索里。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注