2010-03-05 3 views
2

Я пытаюсь использовать NHibernate.Поиск для получения Lucene.NET Оценка через прогнозы.NHibernate.Поиск Прогнозы

Мой объект домена реализует интерфейс IScorableEntity

public interface IScorableEntity 
{ 
    float Score { get; set; } 
} 

...

IFullTextSession session = Search.CreateFullTextSession(database.Session); 
IFullTextQuery textQuery = session.CreateFullTextQuery(query, typeof(Book)); 
textQuery.SetProjection(ProjectionConstants.SCORE); 
var books = textQuery.List<Book>(); 

Без бальной проекции все работает, но с ним есть исключение:

InvalidCastException: по крайней мере один элемент в исходном массиве не мог будет сбрасываться до целевого массива .

ответ

1

очутилась, мне нужно использовать 2 проекции для этого

textQuery.SetProjection(ProjectionConstants.SCORE, ProjectionConstants.THIS); 

var list = textQuery.List(); 

var books = new List<Book>(); 
foreach(object[] o in list) 
{ 
    var book= o[1] as Book; 
    if (book!= null) 
    { 
     book.Score = (float)o[0]; 
    } 
    books.Add(book); 
} 

return books; 

 Смежные вопросы

  • Нет связанных вопросов^_^