【发布时间】:2012-02-07 12:53:53
【问题描述】:
我在单个 NHibernate 搜索索引中存储了多个实体,希望能够一次查询所有实体。用例是一个返回混合结果的简单搜索页面。因此,例如,代码可能如下所示:
public interface ISearchable {}
[Indexed(Index = "TheIndex")]
public class SearchableEntityA : ISearchable
{
// Some [Field]s
}
[Indexed(Index = "TheIndex")]
public class SearchableEntityB : ISearchable
{
// Some other [Field]s
}
所有索引都很好,当然可以在原始 NHibernate 中查询,如下所示:
session.CreateCriteria<ISearchable>().List<ISearchable>();
我在 ISearchable 上有一些字段,但在 NHibernate 映射中没有专门引用这些字段。
我的希望是我可以说:
var query = "some keyword";
fullTextSession.CreateFullTextQuery<ISearchable>(query).List<ISearchable>();
并检索 ISearchables 列表,其中包含来自各种不同实体的结果。然而,现实是它抛出了NHibernate.HibernateException: Not a mapped entity: NetComposites.Model.ISearchable。
那么,用 NHibernate Search 实现类似于多态查询的最简单方法是什么?
【问题讨论】:
标签: .net nhibernate lucene lucene.net nhibernate-search