0

我们有使用此查询的网站:

SELECT did, kid FROM top_keywords WHERE MATCH('@keyword "^EXAMPLE KEYWORD$"') LIMIT 0,

100;

它在 99% 的时间里都很好用,但是用一些编码它就不起作用了。例子:

SELECT did, kid FROM top_keywords WHERE MATCH('@keyword "^εργον$"') LIMIT 0, 100;

产生错误:

错误 1064 (42000):索引 top_keywords:语法错误,意外的“$”,在“εργον$”附近需要 TOK_KEYWORD 或 TOK_INT

我的狮身人面像版本是 2.0.6。

我唯一的想法是这与conf-charset-type有关。

4

1 回答 1

1

我尝试将您的话复制/粘贴εργονhttp://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder

它似乎完全由非 ascii UTF8 字符组成。(即代码都是255+)

因此,所有这些字母都需要在charset_table其中才能正常工作。


我猜他们不在你身上charset_table(仅仅设置charset_type=utf8是不够的),在这种情况下它们被完全剥离,所以查询变成

SELECT did, kid FROM top_keywords WHERE MATCH('@keyword "^ $"') LIMIT 0, 100;

...因为字母都被视为分隔符,这显然会给您留下无效的查询。


不幸的是,我无法为您提供有关 charset_table 国际支持的任何良好参考(不知道!),但也许从 wiki http://sphinxsearch.com/wiki/doku.php?do=search&id=charset_table开始

于 2013-08-12T09:52:06.877 回答