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_表的国际支持的好的参考资料(不知道是什么!),但也许可以从维基开始