hibernate 搜索排序

标签 hibernate lucene hibernate-search

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

例如,

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

book2:id = 2,bookTitle =“正在运行的 hibernate 搜索”

如果我正在查询以查找术语“hibernate 搜索”,我将具有以下顺序:book1然后book2

我想反转此顺序:book2然后book1。
这意味着反转主键顺序。
是否有可能在不实现自定义相似性的情况下做到这一点?同时保持相关性顺序。

最佳答案

是的,您需要创建一个Sort对象,该对象指定所需的排序,并在查询中进行设置。参见Section 5.1.3.3 of the Hibernate docs。然后,在 SortFields 列表中,传递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();

关于 hibernate 搜索排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222490/

相关文章:

java - Infinispan - 使用索引加载数据非常慢。可以做得更快吗?

java - 使用 NOLOCK 消除具有悲观锁定的应用程序的死锁

带有 EmbeddedId 的 hibernate 条件

java - Hibernate 在单个事务中自动更新

lucene - CQ5.6.1 lucene配置文件在哪里?

java - Hibernate Search 能否通过用户可访问性限制结果?

mysql - 恢复 XID 提高 0 : unknown

lucene - Sitecore 自定义索引配置语言

java - Lucene 和访问控制(评论的可见性)

elasticsearch - 在不同索引上组合休眠搜索查询的最佳方法