在查询 "select ... where match('parameter')" 中,我应该为非英语的 charset_table 使用什么参数?

What parameter should I use for non-english's charset_table in query "select ... where match('parameter')"?

为了支持中文或CJK,我在sphinx.conf中使用了包含CJK characters'charset_table, 在建立索引并启动 searchd 之后,我使用了一个客户端 mysql 来连接它:

mysql -h 0 -P 9306 

我可以使用以下命令查询和获取所有记录:

mysql> select * from excursion_core;

但是如果我追加 where match 我什么也得不到:

mysql> select * from excursion_core where match('kike');
Empty set (0.00 sec)

为了验证这样一个新的 charset_table 是否会影响这一点,我使用旧的 sphinx.conf 仅用于英语和 运行 相同的命令:

mysql> select * from excursion_core where match('kike');

我可以得到匹配字符串'kike'的所有记录。

我想我应该为 CJK 的字符集使用不同的字符串,但我不知道应该使用什么字符串?欢迎任何建议!

根据我另一个类似的问题:,我找到了答案。 运行宁locale后得到如下信息:

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

"C"不适合UTF-8,所以我执行了命令:

export LANG=en_US.UTF-8

它改变了 locale 的结果:

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

然后我运行问题的查询就可以得到正确的记录:

mysql> select * from excursion_core where match('kike');