我的应用程序在本地使用Sunspot Solr,支持unicode 没有问题。然而,在生产中,使用Heroku和Websolr,所有 unicode查询返回零结果。我已经通过Websolr确认了 支持我可以使用unicode直接查询他们的Solr系统 它工作正常。当我从我的生产应用程序查询时,他们 在日志中看到这样的东西:q =أرسنا
所以它似乎与Websolr无关。我也试过跑了 生产模式中的本地应用程序(指向Websolr),一旦我这样做 那个,查询再也没有返回结果!
我想知道是否有人遇到类似的问题,我应该在哪里 正在寻找答案?我尝试将solr生产日志级别设置为 INFO或更多信息,以查看发送给Solr的内容,但出于某种原因 这也没有显示在服务器日志中。
由于
答案 0 :(得分:0)
我不确定,但是在您提出请求时可能会出于某种原因,WebSolr可能无法发送使用哪个字符集,因此您的应用程序服务器(我不确定JBOSS或Tomcat)是否会认为它应该使用默认字符集(可以是ISO-8859-1)。我认为这应该是该产品的一个错误。
答案 1 :(得分:0)
当Sunspot切换为对其请求使用HTTP POST时,它(及其依赖项,RSolr)遗憾地没有为其Content-type标头指定字符集。这导致Tomcat根据servlet规范默认为ISO-8859-1,导致UTF-8字符的解码错误。
更新版本的RSolr 1.0.7已通过使用UTF-8字符集指定正确的内容类型标头来解决此问题。因此,看到此错误的Sunspot用户应确保其RSolr gem依赖关系已更新为1.0.7或更高。