0

当我使用 SolrQuery 的 add(SolrParams params) 方法添加两个“facet.fields”时,最后一个会覆盖第一个,因为 SolrQuery.add() 方法在内部委托给 LinkedHashMap 的 put() 方法,而 LinkedHashMap 具有唯一键.

如何将两个 facet.field 值添加到 SolrQuery?我真的必须使用更具体的 SolrQuery.addFacetField() 方法(并使用其他方法来设置 mincount 并为我的 facetfield 排序)吗?

4

1 回答 1

3

似乎SolrQuery.add(SolrParams params)覆盖了相同的键:

ModifiableSolrParams params1 = getParamsForTagsFacet(); // this has a 'facet.field'
ModifiableSolrParams params2 = getParamsForRegionsFacet(); // this has a 'facet.field'
SolrQuery q = new SolrQuery() // extends ModifiableSolrParams
q.add(params1); // adds first 'facet.field'
q.add(params2); // overwrites first 'facet.field'

q.add(String key, String... value)改为保留两个 'facet.field'键

ModifiableSolrParams solrParams = facet.createSolrParams();
Iterator<String> iterator = solrParams.getParameterNamesIterator();

while(iterator.hasNext()){
    String param = iterator.next();
    String value = solrParams.get(param);
    // adding multiple identical params like this works. 
    // It creates a single key with multiple values in the underlying LinkedHashMap
    q.add(param, value); 

}
于 2013-09-16T20:11:45.883 回答