`
zhxmyself
  • 浏览: 40671 次
  • 来自: ...
社区版块
存档分类
最新评论

lucene 排序

阅读更多
Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。

下面研究几种设置/改变检索结果排序的方法。

1、改变Document的boost(激励因子)
改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。

2、改变Field的boost(激励因子)
改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。

3、使用Sort排序工具实现排序
Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。
调用sort进行排序的方法是IndexSearcher.search,例如:
IndexSearcher.search(query,sort);

关于Sort类,在其内部定义了6种构造方法:
    public Sort() //
    public Sort(SortField field)  //通过构造某个域(field)的SortField对象根据一个域进行排序
    public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序
    public Sort(String field) //根据某个域(field)的名称构造Sort进行排序
    public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序
    public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序

4、直接使用SortField实现排序

   关于SortField类,在其内部定义了7种构造方法:
public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序
public SortField (String field, int type)
public SortField (String field, int type, boolean reverse)
public SortField (String field, Locale locale)
public SortField (String field, Locale locale, boolean reverse)
public SortField (String field, SortComparatorSource comparator)
public SortField (String field, SortComparatorSource comparator, boolean reverse)

type对应的值分别为:
SortField. SCORE 按积分排序
SortField. DOC 按文档排序
SortField. AUTO 域的值为int、long、float都有效
SortField.STRING 域按STRING排序
SortField..FLOAT
SortField.LONG
SortField.DOUBLE
SortField.SHORT
SortField.CUSTOM 通过比较器排序
SortField.BYTE

  
5、自定义排序
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧

分享到:
评论

相关推荐

    lucene排序.zip

    《深入理解Lucene排序机制:从关键词频率到自定义优先级》 在信息检索领域,Lucene是一个广泛使用的全文搜索引擎库。它提供了强大的文本分析、索引和搜索功能,而排序作为搜索结果的重要组成部分,是Lucene的一个...

    lucene排序、设置权重、优化、分布式搜索.pdf

    Lucene 排序、设置权重、优化、分布式搜索 Lucene 是一个高性能的搜索引擎库,它提供了强大的文本搜索和索引能力。下面我们将详细介绍 Lucene 的排序、设置权重、优化和分布式搜索等知识点。 一、Lucene 排序 ...

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

    深入了解 Lucene 之三排序算法 Lucene 排序算法是搜索引擎中的核心组件之一,负责将搜索结果按照相关度排序以便用户快速找到所需信息。 Lucene 的排序算法主要基于 tf-idf 模型,以下是 Lucene 排序算法的详细介绍...

    lucene的排序过滤和分页.zip

    本资料主要探讨了Lucene中的排序、过滤和分页技术,这些都是构建高效、实用的信息检索系统的重要组成部分。 **排序(Sorting)** 排序是Lucene中的一项核心功能,允许我们根据文档的某个或多个字段来对搜索结果...

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

    《Lucene4.X实战:构建类百度搜索的大型文档海量搜索系统——排序篇》 在搜索引擎的世界里,正确的排序机制是提升用户体验的关键因素之一。Apache Lucene,作为一款强大的全文检索库,提供了丰富的功能,包括对搜索...

    lucene自定义排序实现

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

    Lucene0之结果排序.pdf

    向量空间模型是Lucene排序算法的基础,由Gerald Salton等人在30多年前提出。该模型假设文档和查询的相关性可以通过它们共有的词汇来衡量。经典的TF-IDF(词频-逆文档频率)公式用于计算词项权重。文档d和查询q的...

    lucene可视化工具 Luck-6.5.0

    4. **文档评分**:Luck 显示每个匹配文档的评分,这是 Lucene 排序算法的结果,展示了文档与查询的相关性。 5. **元数据查看**:用户可以查看索引的元数据,如文档总数、字段列表、分段信息等,这些信息对于分析...

    Lucene5学习之自定义排序

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

    基于Lucene的医疗搜索引擎排序算法的研究.pdf

    实验结果显示,这种方法能提升Lucene排序算法的查准率10%至20%。 【关键词】涉及的几个核心概念包括: 1. 向量空间模型(Vector Space Model,VSM):这是信息检索中的一种模型,通过将文档和查询表示为高维向量来...

    lucene4.3 按坐标距离排序

    在"lucene4.3 按坐标距离排序"这个主题中,我们将探讨如何在Lucene 4.3版本中利用地理位置信息进行文档排序,特别是在处理地理空间搜索时的应用。 首先,Lucene 4.3引入了对地理空间搜索的支持,这允许我们根据地理...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-17.Lucene高级进阶3 共4页.pptx

    5. **Lucene排序**: Lucene允许根据指定字段进行结果排序,通过`Sort`对象可以定制排序规则,比如按照相关度、时间等进行排序。这在提供个性化搜索体验时尤其重要。 6. **过滤与筛选**: 除了基本的查询,Lucene...

    Lucene5学习之排序-Sort

    “Lucene5学习之排序-Sort”这个标题表明了我们要探讨的是关于Apache Lucene 5版本中的排序功能。Lucene是一个高性能、全文检索库,它提供了强大的文本搜索能力。在这个主题中,我们将深入理解如何在Lucene 5中对...

    深入理解Luncen搜索引擎开发

    Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于...Lucene排序 Lucene过滤 Lucene分词器

    Luncene学习资料

    【Lucene 排序】在Lucene中,排序是通过实现`Sort`类或使用`SortField`对象来完成的。排序不仅可以基于文档的分数(即查询的相关性),还可以基于文档的字段值。例如,你可以根据文档的创建日期、作者名或其他自定义...

    java Lucene 中自定义排序的实现

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics