我应该在查询中使用哪些参数用于非英语的charset_table"选择...匹配('参数')"?

时间:2015-06-23 10:57:39

标签: sphinx non-ascii-characters

为支持中文或CJK,我使用了CJK characters' charset_table中的sphinx.conf, 索引和启动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的charset使用不同的字符串,但我不知道我应该使用什么字符串?欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

根据我的另一个类似问题:How to enable ActiveRecord to support CJK query?,我找到了答案。运行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');