鉴于以下多地图索引,如何从查询中排除TypeA
类型的实体?
指数:
AddMap<TypeA>(docs => from doc in docs
select new
{
doc.Title,
doc.DatePublished,
Query = new object[]
{
doc.Title,
doc.Body,
doc.Tags
}
});
AddMap<TypeB>(docs => from doc in docs
select new
{
doc.Title,
doc.DatePublished,
Query = new object[]
{
doc.Title,
doc.Body,
doc.Tags
}
});
Index("@metadata.Raven-Entity-Name", FieldIndexing.Default);
我试过
session.Advanced.LuceneQuery<ISharedInterface, IndexType>()
.Not.WhereEquals("@metadata.Raven-Entity-Name",
Session.Advanced.DocumentStore
.Conventions.GetTypeTagName(typeof(TypeA)));
但是我收到了错误
字段'@ metadata.Raven-Entity-Name'未编入索引
答案 0 :(得分:2)
您需要将该字段添加到映射函数中:
select new {
...
Tag = doc["@metadata"]["Raven-Entity-Name"],
...
}
将其添加到两个地图中,然后可以删除Index()行。
请参阅http://ravendb.net/docs/client-api/advanced/document-metadata