【问题标题】:Dynamic Facets in Elastic Search using Nest Client使用 Nest 客户端的弹性搜索中的动态构面
【发布时间】:2012-12-17 14:42:49
【问题描述】:

我需要一种方法来控制构建方面,而无需仅使用嵌套流式 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;
    }

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

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

    public TermFacetDescriptor<CatalogMapping> FacetBuilder(TermFacetDescriptor<CatalogMapping> termFacet, FacetOptions options)
        {
            termFacet.OnField(options.Field);
            termFacet.Size(options.Size);
    
            if (options.IncludeAllTerms)
                termFacet.AllTerms();
    
            return termFacet;
        }
    

    【讨论】:

    • 我与Func&lt;T, T&gt; 或Action&lt;T&gt; 的永恒斗争:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多