0

我想操纵 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 列表,或者您知道该问题的更好解决方案吗?

4

0 回答 0