3

我的应用程序在本地使用 Sunspot Solr,支持 unicode 没有问题。然而,在生产中,使用 Heroku 和 Websolr,所有 unicode 查询都返回零结果。我已经通过 Websolr 支持确认我可以使用 unicode 直接查询他们的 Solr 系统,并且工作正常。然而,当我从我的生产应用程序查询时,他们在日志中看到了这样的内容:q=أرسنا</p>

所以它似乎与 Websolr 无关。我还尝试在生产模式下运行本地应用程序(指向 Websolr),一旦我这样做了,查询又不会返回任何结果!

我想知道是否有人遇到过类似的问题,我应该在哪里寻找答案?我尝试将 solr 生产日志级别设置为 INFO 或更高,以查看发送到 Solr 的内容,但由于某种原因,服务器日志中也没有显示。

谢谢

4

2 回答 2

0

我不确定,但可能由于某种原因,当你发出请求时,WebSolr 可能没有发送要使用的字符集,所以你的应用程序服务器(我不确定是 JBOSS 还是 Tomcat)会认为它应该使用默认字符集(可以是 ISO-8859-1)。我认为这应该是产品的错误。

于 2012-02-09T09:19:52.910 回答
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 或更高版本。

于 2012-02-25T01:42:24.520 回答