RavenDB能否以某种方式将搜索分解为子方面?

时间:2013-05-02 12:37:42

标签: ravendb faceted-search

我对分面搜索很新,所以我很难绕过这个...但是这里有:

假装我Item包含SubItem的集合,而SubItem有一个表示状态的枚举 - 我已成功启用{{1上的类别的分面搜索}和Item使用此索引定义:

SubItem

public class FacetIndexItems : AbstractIndexCreationTask<Item> { public const string FacetId = "facets/Items"; public const string ItemCategoryFacetName = "Category"; public const string SubItemCategoryFacetName = "SubItems_Category"; public FacetIndexItems() { Map = items => from item in items from subItem in item.SubItems select new { Category = item.Category, SubItems_Category = subItem.Category }; } }

FacetSetup

到目前为止,非常好!

现在,假装new FacetSetup { Id = FacetIndexItems.FacetId, Facets = { new Facet {Name = FacetIndexItems.ItemCategoryFacetName}, new Facet {Name = FacetIndexItems.SubItemCategoryFacetName} } } 拥有SubItem属性 - 有没有办法将每个方面的结果划分为不同的状态?

E.g。以便查询这些数据:

Status
{ Category: "wut", SubItems: [ {Category: "bim", Status: "good"}, {Category: "bim", Status: "good"}, {Category: "bim", Status: "bad"} ] }

会产生类似

的结果
item.Category.In("wut") && item.SubItems.Any(s => s.Category.In("bim"))

我不确定这是否可能与分面搜索有关,如果我的方法错了,我绝对愿意接受替代方案。

1 个答案:

答案 0 :(得分:1)

您必须为每个选项生成不同的值,您不能一次在多个字段上执行构面。 但是你可以在索引时生成字段,这样就可以了。