2014-09-10 3 views
0

У меня есть Solr динамическое поле добавляемые моей CMS с этим определением:Поддерживает ли SolrJ строковые массивы?

<dynamicField name="*_path" type="string" indexed="true" stored="true" multiValued="true"/> 

Когда я регулярный вызов получить в браузере, я получаю это:

"classification_parent_path": 
    [ 
     "tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia", 
     "tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia tag:geo.example.no,2014:Norge tag:geo.example.no,2014:S%C3%B8rlandet", 
     "tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia tag:geo.example.no,2014:Norge tag:geo.example.no,2014:Nord-Norge" 
    ] 

И это, как я хочу это. Однако, когда я делаю то же запрос с SolrJ, я получаю это:

[tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia, tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia tag:geo.example.no,2014:Norge tag:geo.example.no,2014:S%C3%B8rlandet, tag:geo.example.no,2014:Europa tag:geo.example.no,2014:Skandinavia tag:geo.example.no,2014:Norge tag:geo.example.no,2014:Nord-Norge] 

Увы, вы можете увидеть, что котировки ушли в прошлом, и результат приведен в одной длинной строке, так что я не знаю, какие теги принадлежит к элементу массива. Не поддерживает ли SolrJ простые строковые массивы?

запрос SolrJ прост, и выглядит следующим образом:

public SolrDocumentList getSearchResults(String queryParam) { 
    SolrQuery query = new SolrQuery(queryParam); 

    QueryResponse response = null; 
    try { 
     response = SolrServer.solr.query(query); 
    } catch (SolrServerException e) { 
     logger.log(Level.ERROR, 
       "Error while running query " + query + 
       "on Solr server instance on " + SolrServer.solr.getBaseURL(), e); 
    } 

    return response.getResults(); 
} 

ответ

1

Использование .getFieldValues() вместо .getFieldValue(). Первый даст вам коллекцию, которую вы можете перебрать, чтобы получить все доступные значения для поля. Я предполагаю, что представление, которое вы видите, это метод .toString(), вызываемый в поле в виде списка.

Смежные вопросы