2

我正在尝试使用 NHibernate.Search 通过预测获得 Lucene.NET 分数。

我的域对象实现了一个接口 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 :源数组中的至少一个元素无法转换为目标数组类型。

4

1 回答 1

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;
于 2010-03-05T08:00:05.440 回答