Sphinx 的错误搜索结果 - Ruby Rails

Wrong search results with Sphinx - Ruby on Rails

我们请求你的帮助,因为我们真的被困住了:-(

我们对使用 Sphinx 搜索的产品之一进行了重大升级

之前搜索一直正常,现在升级后结果完全错误,降级多日等,我们无法解决。

带或不带重音符号的搜索应该 returns 数百个结果,但现在只有 returns 几个结果。 搜索结果完全错误,重音字符似乎被替换为什么,好像 charset_table 被忽略了。

为了获得"hopital"或"hôpital"的良好结果,我们必须输入"hpital" ....

当然我们使用 charset_table,重新索引所有表,使用 UTF8 等。

在我们进行有效搜索之前:

我们损坏的配置是:

提前感谢您的所有反馈

不确定是否有足够的知识来建议 如何 修复它,但也许可以解释它。

Sphinx 有一个重写的分词器,它对无效的 UTF8 序列有不同的响应。

之前无效的序列会变成 'seperators',所以搜索完全有可能成功,因为 "hôpital" 会简单地被索引为 "h pital",查询也会做同样的事情,并且所以 'match'。

但是新的分词器,'drops' 无效序列,所以如果 "hôpital" 收到 'mangled' 以某种方式它被索引为 hpital - 无效字节消失了。

(查询解析器没有改变,所以现在与文本解析行为不一致)

因此,如果 UTF 数据的索引以某种方式不完全正确,那么行为将会改变。只是之前没有注意到,因为它一直是错误的:)

所以也许确保 sphinx 从数据库中正确接收数据,可以修复它吗?像 SET NAMES 这样的东西。如果在 sphinx 接收到的数据有效,那么根据 charset_table,它的索引应该是正确的。