1

我需要一种方法来控制构建方面,而无需仅使用 Nest fluent api。主要需要是我可能需要包含或排除 allterms 或 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;
    }
4

1 回答 1

2

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

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

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

        return termFacet;
    }
于 2012-12-17T15:10:44.793 回答