休眠搜索是否可以在从数据库中获得搜索结果后根据最佳匹配对结果进行排序
问问题
2152 次
2 回答
3
Lucene 具有排序功能(默认为相关性)。
Hibernate 搜索公开了这个功能(FullTextQuery.sort)。如果您不想要默认行为,您可以传递您自己的排序对象。
Sort sort = new Sort(new SortField("name"));
searchQuery.setSort(sort);
List results = searchQuery.list();
在您的情况下,默认排序应该就足够了。
于 2011-01-30T06:14:17.147 回答
2
默认情况下,Hibernate Search 将根据默认 Lucene 评分实现确定的结果的相关性(如 doc_180 所述)对结果进行排序。
但是,如果您对排名方式不满意(例如,您可能希望 People 实体的排名通常高于您拥有的所有其他索引实体),那么您可以执行以下两项操作之一:
- 将动态或静态增强因子应用于应该被认为更相关的实体(请参阅@Boost 和 @DynamicBoost 注释上的文档),或者
- 您可以通过扩展 org.apache.lucene.search.Similarity 来编写自己的自定义评分实现(请参阅Hibernate Search Advanced Features)。第 1 点中提到的提升因子只是这个整体评分算法中的一个因素。
于 2011-02-10T03:29:10.343 回答