我们寻求你的帮助,因为我们真的被困住了。
我们在一个使用狮身人面像搜索的产品上做出了很大的提升。
搜索以前一直运行良好,但现在升级结果是绝对错误的,经过许多天的降级等,我们无法解决它。
带或不带重音的搜索应该返回上百个结果,但现在只返回很少的结果。搜索结果是完全错误的,重音字符似乎被替换为零,好像charset_table被忽略了一样。
为了获得"hopital“或”h pital“的良好效果,我们必须键入"hpital”.
当然,我们使用charset_table,重新索引所有表,使用UTF8等等。
在我们进行工作搜索之前:
我们的坏配置是:
谢谢你的反馈
发布于 2016-12-01 13:04:07
不确定是否有足够的知识来建议如何修复它,但可能能够解释它。
狮身人面像有一个重写的令牌程序,它对无效的UTF8序列有不同的响应。
以前无效的序列只会变成‘分隔器’,所以搜索是完全可能的,因为"h pital“将被简单地索引为”h pital",查询也会这样做,因此‘匹配’。
但是新的标记程序'drops‘无效序列,所以如果“h pital”以某种方式被接收到'mangled’,它就会被索引为hpital -无效的字节就会消失。
(查询解析器没有改变,因此现在对文本解析的行为是不一致的)
因此,如果UTF数据的索引不完全正确,那么行为就会改变。只是之前没有被注意到,因为它一直都是错误的:)
所以也许确保狮身人面像收到的数据是正确的数据库,可以修复它吗?就像一个固定的名字。如果在狮身人面像收到的数据是有效的,那么它应该按照charset_table索引ok。
https://stackoverflow.com/questions/40907636
复制相似问题