NHibernate.Search 预测

发布于 2024-08-24 03:31:51 字数 593 浏览 5 评论 0原文

我正在尝试使用 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:至少一个 源数组中的元素无法 向下转换为目标数组 类型。

I'm trying using NHibernate.Search to get Lucene.NET Score through projections.

My domain object implements an 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<Book>();

Without the score projection all is working, but with it a got an exception :

InvalidCastException : At least one
element in the source array could not
be cast down to the destination array
type.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2024-08-31 03:31:51

发现我自己,我需要为此使用 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;

Found myself, i need to use 2 projections for this

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文