2014-09-10 124 views
0

我有我的CMS添加这个定义Solr的充满活力的领域:SolrJ是否支持字符串数组?

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

当我在浏览器中一个普通的GET电话,我得到这样的:

"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()方法。