簡體   English   中英

NHibernate。搜索投影

[英]NHibernate.Search Projections

我正在嘗試使用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:無法將源數組中的至少一個元素轉換為目標數組類型。

發現自己,我需要為此使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM