ElasticSearch with Tire中的ASCII字符

时间:2013-06-04 23:09:05

标签: ruby-on-rails encoding elasticsearch

我有一个巴西葡萄牙语网站。我正在使用Elasticsearch来运行我们的网站搜索。

当访问者从我们的网站搜索时,一切正常,但codebasehq给出了一些例外(错误):Tire :: Search :: SearchRequestFailed

nested: JsonParseException[Invalid UTF-8 middle byte 0x72\n at [Source: [B@42dcdefd; line: 1, column: 46]]; }]","status":500}

这些错误只来自我不知道这些链接在哪里的网址,例如:

?q=Acess%F3rios (error)
?q=Acessórios (ok)
?q=Acess%C3%B3rios (ok)

我不知道如何修复此错误,我正试图停止在codebasehq中生成错误。

1 个答案:

答案 0 :(得分:0)

错误似乎来自Elasticsearch,它会因收到的无效JSON而跳闸。

一般来说,Tire可以很好地处理搜索中的重音字符:

# encoding: UTF-8
require 'tire'

s = Tire.search do
  query { string 'Žluťoučký' }
end

p s.results

您应该使用以下命令启用轮胎记录:

Tire.configure { logger STDERR, level: "debug" }

或使用Rails logger,找到有问题的JSON,调试它,并在此处发布更多信息。