【问题标题】:Using Hibernate Search to Rate Result使用 Hibernate Search 对结果进行评分
【发布时间】:2011-01-30 05:53:24
【问题描述】:

hibernate search在从数据库中得到搜索结果后,是否可以根据最佳匹配对结果进行排序

【问题讨论】:

    标签: hibernate lucene hibernate-search


    【解决方案1】:

    Lucene 具有排序功能(默认为相关性)。

    Hibernate 搜索公开了此功能 (FullTextQuery.sort)。如果你不想要默认行为,你可以传递你自己的排序对象。

    Sort sort = new Sort(new SortField("name"));
    searchQuery.setSort(sort);
    List results = searchQuery.list();
    

    在您的情况下,默认排序就足够了。

    【讨论】:

      【解决方案2】:

      默认情况下,Hibernate Search 将根据默认 Lucene 评分实现确定的结果的相关性(如 doc_180 所述)对结果进行排序。

      但是,如果您对排名方式不满意(例如,您可能希望 People 实体的排名通常高于您拥有的所有其他索引实体),那么您可以做以下两件事之一:

      1. 将动态或静态提升因子应用于应被视为更相关的实体(请参阅有关 @Boost 和 @DynamicBoost 注释的文档),或
      2. 您可以通过扩展 org.apache.lucene.search.Similarity 来编写自己的自定义评分实现(请参阅Hibernate Search Advanced Features)。第 1 点中提到的提升因子只是整个评分算法中的一个因素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多