Solr 返回不在结果中的 Facets

问题描述 投票:0回答:1

每次搜索我都会得到相同的方面(基本上是该属性的任何项目上存在的所有值的完整列表)。我正在处理特征的多列表字段,无论我如何限制搜索,我总是得到所有现有的特征,而不仅仅是这些结果中实际存在的特征。事实上,即使当我修改搜索结果而没有得到任何结果时,我仍然得到每一个特征。为什么它给了我结果中没有的方面?

using (var searchContext = index.CreateSearchContext())
{
    var predicate = PredicateBuilder.True<ContentTypeSearchResultItem>();
    var contentType = Constants.Taxonomy.Product;

    predicate = predicate.And(x => x.ContentType.Contains(contentType));
    predicate = predicate.And(x => x.TemplateId.Guid == templateId);

    var query = searchContext.GetQueryable<ContentTypeSearchResultItem>().Filter(predicate);
    query = query
        .FacetOn(x => x.Traits)
            
    var results = query.GetResults();

    Sitecore.Diagnostics.Log.Info("Results:", this);

    var items = results.Hits.Select(x => x.Document);
    foreach (var item in items)
    {
        Sitecore.Diagnostics.Log.Info($"{item.Path}", this);
    }

    Sitecore.Diagnostics.Log.Info("Trait Facets:",this);

    var traits = results.Facets.Categories.FirstOrDefault(x => x.Name.ToLower().Contains("traits"));

    foreach (var trait in traits.Values)
    {
        Sitecore.Diagnostics.Log.Info($"{trait.Name}", this);
    }

    return results.Facets.Categories.ToList();
}

我添加了一些日志记录,并使用模板 ID 谓词,实际上我得到了零结果,但仍然获得了完整的方面列表,并为每个作物类型搜索获取了该列表,这是日志记录输出:

44312 15:13:01 信息结果: [未列出结果] 44312 15:13:01 信息特征方面: 44312 15:13:01 信息 26d3faa9d8e04b5da5a3da77d69a2b51 44312 15:13:01 信息 54aa71076cf442dfa37c7c5abf3ef0ad 44312 15:13:01 信息 54c4f97f95c4498e8ca3870687fc6995 44312 15:13:01 信息 5c3db73e0cd4422abf2e58a431530a4e 44312 15:13:01 信息 8d4fe44e1523471da89981207895553c 44312 15:13:01 信息 95f80ed476594995b7878ab4eefa8d98 44312 15:13:01 信息 a2fc835c202e488991005144af7f2bef 44312 15:13:01 信息 c91769f140524b8eac5486423cfdb4f3 44312 15:13:01 信息 d963303d6c284d2db7b1b78a69c38a33

solr facet
1个回答
0
投票

Solr有一个可选的minimumResultCount,它确定显示该方面值需要多少结果。它默认为零,因此如果您只想要结果中的构面(例如,minimumResultCount 为 1),请将其添加到 FacetOn:

query = query.FacetOn(x => x.Traits, 1)
© www.soinside.com 2019 - 2024. All rights reserved.