Hibernate 搜索排序

2024-02-25

Hibernate 搜索根据相关性对结果进行排序,这是正常的。 除此之外,如果两个文档具有相同的分数,则它们按主键排序。

例如,

book1 : id=1, bookTitle = “通过示例进行休眠搜索”。

book2 : id=2, bookTitle = "休眠搜索实际操作"

如果我正在执行查询来查找术语“hibernate search”,我会按以下顺序:book1 然后 book2

我想颠倒这个顺序:book2 然后 book1。 这意味着反转主键顺序。 有没有一种可能的方法可以在不实现自定义相似度的情况下做到这一点?同时保持相关顺序。


是的,您需要创建一个Sort指定所需排序的对象,并将其设置在您的查询中。看Hibernate 文档第 5.1.3.3 节 http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#d0e5251。然后,在列表中SortFields https://lucene.apache.org/core/4_4_0/core/org/apache/lucene/search/SortField.html pass SortField.FIELD_SCORE。 SortField 的构造函数还允许您颠倒顺序。

org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, MyEntity.class );
org.apache.lucene.search.Sort sort = new Sort(
    SortField.FIELD_SCORE, 
    new SortField("id", SortField.STRING, true));
query.setSort(sort);
List results = query.list();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 搜索排序 的相关文章

随机推荐