У меня есть несколько объектов, хранящихся в одном индексе поиска 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?