错误的搜索结果 - Ruby on Rails的
问题描述:
我们请求你们的帮助,因为我们真的陷入:-(错误的搜索结果 - Ruby on Rails的
我们对我们的产品使用Sphinx搜索
搜索一直是一个犯了大uppgrade之前工作正常,但现在升级后的结果是绝对错误的,经过多天降级等后,我们无法解决它。
搜索带有或不带有重音符的搜索应该返回数百个结果,但现在只返回几个结果。 搜索结果完全错误,重音字符似乎被替换为无,就像charset_table被忽略。
为了获得“总医院”或“总医院”的好成绩,我们必须键入“hpital” ......
当然,我们使用charset_table里,重新索引所有表,使用UTF8等。 。
之前,我们曾与工作搜索:
- Ruby on Rails的1.9.3
- 狮身人面像2.0.10
- 里德尔1.5.12
- 思考狮身人面像3.1.4
- Mysql的52年5月5日
我们破碎的配置是:
- Ruby on Rails的2.0.0
- 狮身人面像2.2.11
- 谜语2.0.0
- 思维狮身人面像3.1.4
- Mysql的52年5月5日
提前感谢您的反馈
答
不知道知道,足以表明如何修复它,但也许能解释它。
狮身人面像有一个改写的标记器,它对无效的UTF8序列做出了不同的响应。因为“hôpital”仅仅被索引为“hitalia”,所以查询会做同样的事情,所以'匹配'就是这样。因为以前无效的序列会变成'分离器',所以它完全有可能进行搜索。
但是新的标记器会'丢弃'无效的序列,因此如果收到'hôpital'在某种程度上被'破坏',它会被索引为hpital - 无效字节消失。
(查询分析器处理不当改变,所以现在用的文本解析inconistenly行为)
所以,如果UTF数据的索引不知何故不完全正确,则行为将发生变化。刚才没有注意到,因为它一直是错误的:)
因此,也许确保狮身人面像正在接收数据正确的数据库,可以解决它吗?像SET NAMES。如果数据在sphinx中收到有效,那么它应该按照charset_table索引ok。
谢谢你的回答,我们正在尝试这个,但此时没有变化 – MrOvitch
问题解决了,谢谢:-) – MrOvitch