2010-03-05 34 views
2

我正在嘗試使用NHibernate.Search通過預測來獲取Lucene.NET Score。NHibernate.Search Projections

我的域對象實現了接口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; 
相關問題