我有多个实体存储在单个 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 实现类似于多态查询的最简单方法是什么?