我想操纵 solr 服务器搜索的结果。我认为在服务器端过滤器上是不可能的,因为该信息仅在运行时在客户端可用。
我试过以下:
private void filterKernSortiment ( SolrDocumentList docsList )
{
List<SolrDocument> filteredItems = new ArrayList<SolrDocument>();
Iterator<SolrDocument> iter = docsList.iterator();
while ( iter.hasNext() )
{
SolrDocument doc = iter.next();
String artnr = doc.getFieldValue( "artnr" ).toString();
String lfnt = doc.getFieldValue( "lfnt" ).toString();
if ( ! user.isForUserInStock( artnr, lfnt ) )
{
filteredItems.add( doc );
}
}
log.debug( "filteredItems=" + filteredItems.size() );
Iterator<SolrDocument> iterFilter = filteredItems.iterator();
while ( iterFilter.hasNext() )
{
SolrDocument doc = iterFilter.next();
docsList.remove( doc );
}
}
SolrDocumentList 被正确过滤,但 getFacetField 函数给出了未经过滤的 SolrDocumentList 的结果。我是否也必须操作 FacetField 列表,或者您知道该问题的更好解决方案吗?