`
strayly
  • 浏览: 97438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

lucene自定义排序

阅读更多
lucene能够很方便的实现自定义排序

具体做法就是写一个类实现SortComparatorSource这个接口

在类里返回ScoreDocComparator

实现ScoreDocComparator 的三个方法compare,sortValue,sortType就行了

public class MyComparatorSource implements SortComparatorSource {  
private static final long serialVersionUID = 1L;  
      

       
     // 返回ScoreDocComparator 用来实现排序功能  
     public ScoreDocComparator newComparator(IndexReader reader, String fieldname) throws IOException {  
         return new DistanceScoreDocLookupComparator();  
     }  
       
      private static class DistanceScoreDocLookupComparator implements ScoreDocComparator {  
          //这里写实现自己的排序比较方法
         public int compare(ScoreDoc i, ScoreDoc j) {  
             if (i.score > j.score) return -1;
             if (i.score < j.score) return 1;
             return 0;
         }  
           
         // 返回值  
         public Comparable sortValue(ScoreDoc i) {
                      return new Float(i.score);  
         }  
           
         //指定SortType  
         public int sortType() {  
             return SortField.FLOAT;  
        }  
  }
}

分享到:
评论

相关推荐

    lucene自定义排序实现

    因此,了解如何在 Lucene 中实现自定义排序是非常关键的。在这个话题中,我们将深入探讨如何根据特定的业务需求对搜索结果进行定制排序。 首先,我们要明白 Lucene 默认的排序机制。默认情况下,Lucene 搜索结果是...

    Lucene5学习之自定义排序

    本文将深入探讨“Lucene5学习之自定义排序”这一主题,帮助你理解如何在Lucene5中实现自定义的排序规则。 首先,Lucene的核心功能之一就是提供高效的全文检索能力,但默认的搜索结果排序通常是基于相关度得分...

    java Lucene 中自定义排序的实现

    Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在...

    lucene 自定义评分

    这样,Lucene 就会使用我们的自定义评分规则进行匹配和排序。 在实际应用中,可能还需要考虑其他因素,如用户偏好、文档质量、关键词位置等。这些都可以通过自定义相似度类中的方法来实现。例如,对于位置敏感的...

    lucene排序.zip

    本文将深入探讨Lucene如何根据关键词出现次数进行排序,以及如何实现自定义排序,包括处理`List&lt;Map&gt;`字段的情况,并结合项目中的`pom.xml`配置来解析这一过程。 首先,Lucene默认的排序方式是基于文档的相关性,即...

    lucene4.3 按坐标距离排序

    5. **Sorting**:在Lucene中,我们可以自定义排序规则,包括基于地理位置的距离排序。这可以通过实现`SortComparatorSource`接口来自定义比较器,或者使用`FieldComparatorSource`来创建一个基于特定字段(如地理...

    深入了解Lucene之三 排序算法.doc

    深入了解 Lucene 之三排序算法 ...Lucene 的排序算法是基于 tf-idf 模型的,通过 tf、idf、coord、queryNorm、norm 等评分因子来计算文档的分数,并提供了丰富的 API 使用户可以实现自定义的排序算法。

    Lucene5学习之Filter过滤器

    1. 创建自定义Filter子类,实现必要的过滤逻辑。 2. 使用Filter的getDocIdSet()方法生成一个BitSet,该BitSet标记了哪些文档满足过滤条件。 3. 将Filter与Query一起传递给Searcher的search()方法,Lucene会自动使用...

    Lucene5学习之排序-Sort

    3. **自定义排序**:除了相关性,我们还可以根据文档的其他字段(如日期、价格等)进行排序。这需要定义`FieldComparatorSource`和`FieldComparator`,以实现自定义比较逻辑。 4. **SortField类型**:`SortField`...

    Lucene5学习之自定义Collector

    这篇博客“Lucene5学习之自定义Collector”显然聚焦于如何在Lucene 5版本中通过自定义Collector来优化搜索结果的收集过程。Collector是Lucene搜索框架中的一个重要组件,它负责在搜索过程中收集匹配的文档,并根据...

    SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--data

    - Lucene支持多种排序策略,如按照评分评分(Score排序),按照文档ID排序,或者根据自定义字段排序。 - 在查询时,通过设置Sort对象指定排序依据和顺序。 5. 高亮显示: - Lucene提供Highlighter类来高亮搜索结果...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-18.Lucene排序 共6页.pptx

    《Lucene4.X实战:构建类百度搜索的大型...通过合理运用得分计算、加分策略和自定义排序,我们可以为用户提供更加符合他们需求的搜索体验。在实际应用中,还需要不断调整和优化,以应对各种复杂场景和大量数据的挑战。

    Lucene0之结果排序.pdf

    通过Sort对象可定制排序,如改变文档的Boost值或使用自定义的Similarity方法。Boost值可以在文档级别或字段级别设置,以影响文档的排名。文档Boosting乘以Field-Boosting来计算最终的加权值,如果未特别设置,通常为...

    Lucene-2.0学习文档

    结合以上文件,我们可以看到Lucene-2.0的学习不仅需要理解基本的索引构建和搜索原理,还需要掌握如何自定义排序规则和分析器以满足特定需求。此外,通过阅读和分析这些源码,开发者还可以深入理解Lucene的内部工作...

    C#+Lucene.Net开发完成的一个自定义WEB搜索引擎

    **C#与Lucene.Net构建自定义Web搜索引擎** 在信息技术高速发展的今天,搜索引擎已经成为人们获取信息的重要工具。本文将深入探讨如何使用C#编程语言和Lucene.Net库来开发一个自定义的Web搜索引擎,帮助开发者了解这...

    Lucene4.7+IK Analyzer中文分词入门教程

    了解这些基础知识后,你可以进一步探索Lucene的高级特性,如多字段搜索、模糊匹配、排序和分页等,以满足更复杂的搜索需求。同时,也可以研究如何优化IK Analyzer的配置,以适应特定的分词需求。

    lucene 权重设置

    3. **排序(Sort)**:Lucene默认按照文档的得分进行排序,但也可以使用`Sort`工具自定义排序规则。例如,你可以设置`SortField`来指定一个或多个字段进行排序,如`SortField(int, SortField.Type, boolean ...

Global site tag (gtag.js) - Google Analytics