我们请求你的帮助因为我们真的被困住了: - (
我们对使用Sphinx搜索的产品进行了大幅度升级
搜索之前一直运行良好,但现在升级结果绝对错误,经过多天的降级后,我们无法解决。
使用或不使用重音符号搜索应返回数百个结果,但现在只返回少量结果。 搜索结果完全错误,重音字符似乎被替换为什么都没有,好像charset_table被忽略了。
为了获得“hopital”或“hôpital”的良好效果,我们必须输入“hpital”....
当然我们使用charset_table,重新索引所有表,使用UTF8等。
在我们进行搜索工作之前:
我们破损的配置是:
提前感谢您的所有反馈
答案 0 :(得分:0)
不确定是否足以建议 如何修复它,但可能能够解释它。
Sphinx有一个重写的标记器,它对无效的UTF8序列做出不同的响应。
以前无效的序列只会成为“分隔符”,所以搜索完全可能有效,因为“hôpital”只会被编入索引,查询会做同样的事情,所以“匹配”。
但是新的标记化器“丢弃”了无效的序列,所以如果“hôpital”被收到“错位”,它会被索引为hpital - 无效字节消失了。
(查询解析器没有改变,所以现在表现得与文本解析不一致)
因此,如果某种方式对UTF数据进行索引并不完全正确,那么行为就会发生变化。之前没有注意到因为它一直是错误的:)
所以也许确保sphinx从数据库中接收数据是正确的,可以修复它吗?像SET NAMES之类的东西。如果数据在sphinx处收到有效,那么它应该按照charset_table索引ok。