2 Stimmen

NHibernate.Search Projektionen

Ich versuche NHibernate.Search zu verwenden, um den Lucene.NET Score durch Projektionen zu erhalten.

Mein Domänenobjekt implementiert ein Interface 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();

Ohne die Score-Projektion funktioniert alles, aber damit bekomme ich eine Ausnahme :

InvalidCastException : Mindestens ein Element im Quellarray konnte nicht in den Zielarraytyp umgewandelt werden.

1voto

Yoann. B Punkte 10835

Ich habe festgestellt, dass ich hierfür 2 Projektionen verwenden muss

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

var list = textQuery.List();

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

return books;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X