2012-03-12 3 views
1

Когда я добавляю документ solr с использованием solrj, это содержимое затем закодировано?Сольр кодирует содержимое?

CommonsHttpSolrServer server = new CommonsHttpSolrServer(
      "http://localhost:8080/solr/"); 
SolrInputDocument doc = new SolrInputDocument(); 
doc.addField("id", 1); 
doc.addField("city", "Zürich"); 
server.add(doc); 
server.commit(); 

Потому что, когда я ищу его со следующим кодом, я не могу его найти (другие города работают).

SolrQuery solrQuery = new SolrQuery(); 
solrQuery.set(CommonParams.WT, "json"); 
solrQuery.setQuery("Zürich"); 

QueryResponse rsp = locationSearchServer.query(solrQuery); 
return rsp.getBeans(City.class); 

В отладчике я вижу, что параметр запроса закодирован в UTF-8 автоматически.

Я также добавил свойство UTF-8 к tomcat http://wiki.apache.org/solr/SolrTomcat#URI_Charset_Config, но без эффекта.

Должен ли я добавить содержимое в кодировку или сделать это для меня?

ответ

2

Проблема в том, что запросы GET могут завершиться с международными символами. Обычно это должно решаться Tomcat-Param, но в моем случае нет.

Решение, которое работает ВСЕГДА, это отправить его как POST

QueryResponse rsp = locationSearchServer.query(solrQuery, METHOD.POST); 
Смежные вопросы