我需要一种方法来控制构建方面,而不仅使用巢式流利的api。主要需求是我可能需要包括或排除所有项或facetfilters。

下面的代码有效,但是要更改构面,我需要重新编译。我看到它需要一个Func,但是我一直无法返回正确的类型来使它正常工作。

        sd.FacetTerm("Name", t => t
            .OnField("Field")
            .Size(facet.Size)
            .AllTerms()
        );

下面的代码不起作用,我确定为什么。调试时,我看到它创建了构面术语,但是没有“FacetBuilder”提供的任何数据。
    sd.FacetTerm(facet.Name, t => FacetBuilder(options));


    public TermFacetDescriptor<CatalogMapping> FacetBuilder(FacetOptions options)
    {
        var facet = new TermFacetDescriptor<CatalogMapping>();
        facet.OnField(options.Field);

        facet.Size(options.Size);
        if (options.IncludeAllTerms)
            facet.AllTerms();

        return facet;
    }

最佳答案

需要传递一个对象引用并修改该实例。

public TermFacetDescriptor<CatalogMapping> FacetBuilder(TermFacetDescriptor<CatalogMapping> termFacet, FacetOptions options)
    {
        termFacet.OnField(options.Field);
        termFacet.Size(options.Size);

        if (options.IncludeAllTerms)
            termFacet.AllTerms();

        return termFacet;
    }

关于c# - 使用Nest Client进行Elastic Search中的动态构面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13916265/

10-12 16:38