Sphinx 斯芬克斯精确匹配误差

Sphinx 斯芬克斯精确匹配误差,sphinx,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; 产生错误: 错误1064(42000):索引

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

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_关键字:语法错误,意外的“$”,应为 “εργον$”附近的TOK_关键字或TOK_INT

我的斯芬克斯版本是2.0.6


我唯一的想法是这与你有关。

我试着把你的单词
εργον
复制/粘贴到

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

所以,所有这些字母都需要在
charset\u表中才能工作


我猜它们不在您的
charset\u表中
(仅设置
charset\u type=utf8是不够的),在这种情况下,它们被完全剥离,因此查询变得非常简单

SELECT did, kid FROM top_keywords WHERE MATCH('@keyword "^ $"') LIMIT 0, 100;
…因为这些字母都被视为分隔符,这显然是一个无效的查询


不幸的是,我不能给你任何关于charset_表的国际支持的好的参考资料(不知道是什么!),但也许可以从维基开始