Hibernate搜索排序

时间:2015-05-13 18:21:20

标签: hibernate lucene hibernate-search

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

例如,

book1:id = 1,bookTitle =“hibernate search by example”。

book2:id = 2,bookTitle =“hibernate search in action”

如果我正在查询术语“hibernate search”,我会有这个顺序:book1 then book2

我想颠倒这个顺序:book2然后book1。 这意味着反转主键顺序。 如果没有实现自定义相似性,是否有可能实现此目的?同时保持相关性秩序。

1 个答案:

答案 0 :(得分:9)

是的,您需要创建一个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();