在solr Hybris中使用_root_连接父记录和子记录

tjrkku2a  于 2023-04-30  发布在  Solr
关注(0)|答案(1)|浏览(148)

在Solr中,我们有带有_root_字段的文档。父记录和子记录通过_root_互连。_root_参数对于父对象及其对应的子对象是相同的。父级和子级的type_string字段不同。我们需要使用root在父节点和子节点上进行连接。
如何在订单和schedulelines之间进行连接,并根据应用于ScheduleLineDetail的“日期”过滤器获取orders

{
            "id":"7503",
            "type_string":"Order",      
            "_version_":1763406080353763328,
            "_root_":"7503"
     }
     {
            "id":"7503_20",
            "entryNumber_string":"20",       
            "type_string":"OrderEntry",
            "_root_":"7503"
    }
    {
            "id":"7503_20_null",
            "date":"2023-04-20T22:39:18Z",
             "type_string":"ScheduleLineDetail",
            "_root_":"7503"
    }
b5lpy0ml

b5lpy0ml1#

可以通过编写CustomSolrQueryConvertor和覆盖convertSolrQuery方法。示例:

public class CustomSolrQueryConvertor extends DefaultSolrQueryConverter implements SolrQueryConverter, BeanFactoryAware {
    
    @override
    public SolrQuery convertSolrQuery(SearchQuery searchQuery) throws FacetSearchException {
    SolrQuery solrQuery = super.convertSolrQuery(searchQuery);
    String dateQuery = "date:"+new Date();
    solrQuery.add("fq", "q={!join from=root to=root}type_string:OrderEntry AND"+dateQuery);
    }
    return solrQuery;
    }

注意:这是一个示例,您需要根据您的文档或需求调整DATE参数。

相关问题