Sphinx 的错误搜索结果 - Ruby Rails
Wrong search results with Sphinx - Ruby on Rails
我们请求你的帮助,因为我们真的被困住了:-(
我们对使用 Sphinx 搜索的产品之一进行了重大升级
之前搜索一直正常,现在升级后结果完全错误,降级多日等,我们无法解决。
带或不带重音符号的搜索应该 returns 数百个结果,但现在只有 returns 几个结果。
搜索结果完全错误,重音字符似乎被替换为什么,好像 charset_table 被忽略了。
为了获得"hopital"或"hôpital"的良好结果,我们必须输入"hpital" ....
当然我们使用 charset_table,重新索引所有表,使用 UTF8 等。
在我们进行有效搜索之前:
- Ruby Rails 1.9.3
- 狮身人面像 2.0.10
- 谜语 1.5.12
- 思考狮身人面像 3.1.4
- Mysql 5.5.52
我们损坏的配置是:
- Ruby Rails 2.0.0
- 狮身人面像 2.2.11
- 谜语 2.0.0
- 思维狮身人面像 3.1.4
- Mysql 5.5.52
提前感谢您的所有反馈
不确定是否有足够的知识来建议 如何 修复它,但也许可以解释它。
Sphinx 有一个重写的分词器,它对无效的 UTF8 序列有不同的响应。
之前无效的序列会变成 'seperators',所以搜索完全有可能成功,因为 "hôpital" 会简单地被索引为 "h pital",查询也会做同样的事情,并且所以 'match'。
但是新的分词器,'drops' 无效序列,所以如果 "hôpital" 收到 'mangled' 以某种方式它被索引为 hpital - 无效字节消失了。
(查询解析器没有改变,所以现在与文本解析行为不一致)
因此,如果 UTF 数据的索引以某种方式不完全正确,那么行为将会改变。只是之前没有注意到,因为它一直是错误的:)
所以也许确保 sphinx 从数据库中正确接收数据,可以修复它吗?像 SET NAMES 这样的东西。如果在 sphinx 接收到的数据有效,那么根据 charset_table,它的索引应该是正确的。
我们请求你的帮助,因为我们真的被困住了:-(
我们对使用 Sphinx 搜索的产品之一进行了重大升级
之前搜索一直正常,现在升级后结果完全错误,降级多日等,我们无法解决。
带或不带重音符号的搜索应该 returns 数百个结果,但现在只有 returns 几个结果。 搜索结果完全错误,重音字符似乎被替换为什么,好像 charset_table 被忽略了。
为了获得"hopital"或"hôpital"的良好结果,我们必须输入"hpital" ....
当然我们使用 charset_table,重新索引所有表,使用 UTF8 等。
在我们进行有效搜索之前:
- Ruby Rails 1.9.3
- 狮身人面像 2.0.10
- 谜语 1.5.12
- 思考狮身人面像 3.1.4
- Mysql 5.5.52
我们损坏的配置是:
- Ruby Rails 2.0.0
- 狮身人面像 2.2.11
- 谜语 2.0.0
- 思维狮身人面像 3.1.4
- Mysql 5.5.52
提前感谢您的所有反馈
不确定是否有足够的知识来建议 如何 修复它,但也许可以解释它。
Sphinx 有一个重写的分词器,它对无效的 UTF8 序列有不同的响应。
之前无效的序列会变成 'seperators',所以搜索完全有可能成功,因为 "hôpital" 会简单地被索引为 "h pital",查询也会做同样的事情,并且所以 'match'。
但是新的分词器,'drops' 无效序列,所以如果 "hôpital" 收到 'mangled' 以某种方式它被索引为 hpital - 无效字节消失了。
(查询解析器没有改变,所以现在与文本解析行为不一致)
因此,如果 UTF 数据的索引以某种方式不完全正确,那么行为将会改变。只是之前没有注意到,因为它一直是错误的:)
所以也许确保 sphinx 从数据库中正确接收数据,可以修复它吗?像 SET NAMES 这样的东西。如果在 sphinx 接收到的数据有效,那么根据 charset_table,它的索引应该是正确的。