错误的搜索结果 - 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。

+0

谢谢你的回答,我们正在尝试这个,但此时没有变化 – MrOvitch

+0

问题解决了,谢谢:-) – MrOvitch