我得到了相同的切面(基本上是该属性的任何项目上存在的所有值的完整列表)为每次搜索。我在Traits的多列表字段上分面,无论我如何限制我的搜索,我总是得到所有现有的Traits,而不仅仅是实际上在这些结果上的Traits。事实上,即使我修改我的搜索,使我得到NO结果,我仍然得到了所有的属性。为什么它给了我一些不在结果上的方面?
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 predicate ,我实际上得到零个结果,但仍然得到完整的facet列表,并为每个作物类型搜索得到,这是日志记录输出:
44312 15:13:01 INFO结果:[NO RESULTS LISTED] 44312 15:13:01 INFO特质方面:44312 15:13:01 INFO 26d3faa9d8e04b5da5a3da77d69a2b51 44312 15:13:01信息54aa71076cf442dfa37c7c5abf3ef0ad 44312 15:13:01 INFO 54c4f97f95c4498e8ca3870687fc6995 44312 15:13:01信息5c3db73e0cd4422abf2e58a431530a4e 44312 15:13:01 INFO 8d4fe44e1523471da89981207895553c 44312 15:13:01信息95f80ed476594995b7878ab4eefa8d98 44312 15:13:01信息a2fc835c202e488991005144af7f2bef 44312 15:13:01信息c91769f140524b8eac5486423cfdb4f3 44312 15:13:01信息d963303d6c284d2db7b1b78a69c38a33
1条答案
按热度按时间gc0ot86w1#
Solr有一个可选的minimumResultCount,它决定了需要多少个结果才能显示该facet值。它默认为零,所以如果你只想要结果上的facet(例如minimumResultCount为1),请将其添加到FacetOn:
字符串