狮身人面像完全匹配错误

时间:2013-08-09 17:59:51

标签: sphinx

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

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;

产生错误:

ERROR 1064(42000):index top_keywords:语法错误,意外'$',期待 'εργον$''附近的TOK_KEYWORD或TOK_INT

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

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

1 个答案:

答案 0 :(得分: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