`

【lucene】高级搜索篇

 
阅读更多

一,概念

1、 Lucene相关排序流程

找到关键词匹配的文档集合---->文档集合每个文档计算检索相似度----->对文档集合进行排序

2、 Lucene相关类

① Query类:一个抽象类, Lucene检索结果最终评分的总控制中心。其它评分有关的类和对象都是由 Query类来管理和生产。

② Weight类接口:定义 Query权重计算的一个实现接口,可以被重用。 Weight类可以用来生成 Scorer类,也可以解析评分的详细信息,另外还定义了获取 Query权值的方法。

③ Scorer类: Lucene评分机制的核心类。类的定义是抽象类,提供的一些抽象基本的计分功能方法提供所有的评分类实现,同时还定义了评分的详细解析方法, Scorer类内部有一个 Similarity对象,用来指明计算公式。

④ Scorer类: Lucene相似度计算的核心抽象类。 Similarity类主要处理评分计算,系统缺省使用类 DefaultSimilarity类对象

3、 排序控制

使用 Sort对象定制排序,通过改变文档 Boost值来改变排序结果以及使用自定义的 Similarity方法更改排序

4、 文档 Boost加权排序

① Boost是指索引建立过程中,给整篇文档或者文档的某一特定域设定的权值因子,在检索时,优先返回分数高的。

Document和 Field两重 Boosting参数。通过 Document对象的 setBoost()方法和 Field对象的 setBoost()方法。不同在于前者对文档中每一个域都修改了参数,而后者只针对指定域进行修改。

文档加权 =Document-boosting*Field-boosting,默认情况下为 1,一般不做修改。

② Sort对象检索排序

Sort使用时通过实例化对象作为参数,通过 Searcher类的 search接口来实现。 Sort支持的排序功能以文档当中的域为单位,通过这种方法,可以实现一个或者多个不同域的多形式的值排序。

实际使用排序对象 Sort进行排序。主要有两种模式,一种是以字符串表示文档域的名称作为参数指定域排序,一种是直接以排序域的包装域的包装类作为参数进行排序。

Sort对象使用比较简单,只需要在对文档索引进行检索时,在检索器的 Search方法中带 Sort对象作为参数即可。

1) Sort对象相关性排序

按照相关性排序时最基本的结果排序方法,使用 Sort对象无参数构造函数完成的排序效果相当于 Lucene默认的按相关性降序排序。

2) Sort对象文档编号排序

某些应用场合需要对所有符合匹配度的结果,按照文档内部编号排序输出。使用 Sort对象的静态实例 Sort.INDEXORDER来实现

3) Sort对象独立域排序

在检索过程中,把检索结果按照某一个特定域排序,非常重要。在使用搜索引擎过程中,有时会选择使用时间排序,而在搜索引擎库中,检索词完全是另外一个域的内容,与时间没有任何关系。这种应用中,检索关键词的匹配仍然是首要因素,匹配太低或者不匹配的文档直接不必处理,而匹配的文档则需进一步排序输出。

指定的排序域并没有进行特别限制,可以是检索词的关联域,也可以是文档中的任意其它域。

4) Sort对象联合域排序

多个文档域联合排序时,需要注意文档域的添加次序。排序的结果先按照第一个域排序,然后第二个域作为次要关键字排序。开发时,需要根据自己的需要选择合适的次序。

5) Sort对象逆向排序

Sort(field,true)或者 Sort(field,false)实现升降序排序。

二,例子


在代码中

//ScoreDoc[] hits = searcher.search(q, null, 1000, Sort.RELEVANCE).scoreDocs;
//ScoreDoc[] hits = searcher.search(q, null, 1000, Sort.INDEXORDER).scoreDocs;
ScoreDoc[] hits = searcher.search(q, null, 1000).scoreDocs;

根据不同的Sort 属性就会得到不同的结果。自己尝试一下吧



分享到:
评论

相关推荐

    lucene高级应用

    《Lucene高级应用详解》 在信息技术领域,搜索引擎技术是数据检索的重要手段,而Apache Lucene作为开源全文搜索引擎库,以其高效、灵活的特点被广泛应用于各类项目中。本篇文章将深入探讨Lucene的高级应用,结合...

    lucene3.6 搜索例子

    Lucene的出现,使得开发人员能够轻松地在他们的应用中添加高级搜索功能。作为一个高性能的信息检索库,Lucene主要包含以下组件:索引、搜索、分析和高亮显示。在3.6版本中,它保持了对大量文档高效处理的能力,并且...

    我封装的搜索引擎之lucene篇

    标题 "我封装的搜索引擎之lucene篇" 暗示了这个压缩包文件包含与Lucene搜索引擎相关的代码或文档。Lucene是Apache软件基金会的开源全文检索库,它提供了高级的文本分析和索引功能,使得开发者能够轻松地在应用程序中...

    lucene高级智能查询小案例

    《Lucene高级智能查询实践与探索》 在信息爆炸的时代,高效、精准的搜索成为了一项重要的技术需求。Apache Lucene作为一款强大的全文检索库,为开发者提供了丰富的工具和接口,帮助实现复杂的文本检索功能。本篇将...

    Lucene.net搜索

    同时,Lucene.NET 还支持高级查询语法,如布尔运算、短语查询、模糊匹配等,提供更精准的搜索体验。 总的来说,Lucene.NET 是 .NET 平台上进行全文搜索的强大工具,其详尽的注释使得学习和使用变得更为容易。通过...

    C#调用Lucene方法-实现快速搜索

    本篇文章将详细探讨如何在C#环境下利用Lucene实现快速搜索。 首先,让我们了解Lucene的基本概念。Lucene是一个开源的Java库,提供了索引和搜索文本的高级工具。它能够对文本进行分词,建立倒排索引,并支持布尔查询...

    Lucene+Nutch搜索引擎开发.王学松源代码

    本篇将围绕“Lucene+Nutch搜索引擎开发”这一主题,深入探讨王学松源代码,帮助读者理解并掌握这两项技术的核心概念和应用。 首先,Lucene是一个高性能、全文检索库,它提供了一个简单的API,使得开发者能够方便地...

    lucene-4.3.1资源

    在Lucene 4.3.1中,还引入了一些高级特性和功能,如N-gram分析、Faceted Search(分面搜索)和Spatial Search(空间搜索)。N-gram分析允许短语匹配,而分面搜索则提供了对分类数据的高级浏览和过滤。空间搜索则允许...

    基于lucene 的简单搜索引擎.rar

    然而,随着数据量的增长,性能优化、分布式索引、实时索引等挑战也随之而来,需要开发者灵活运用Lucene的高级特性以及与其他技术(如Solr、Elasticsearch)的集成来解决。 总的来说,“基于lucene 的简单搜索引擎....

    全文搜索技术Lucene Demo

    本篇文章将深入探讨Lucene的核心概念、工作原理以及如何通过一个Demo来实践它的使用。 Lucene的主要功能包括索引构建、查询解析、评分和结果排序。索引构建是将原始文本数据转换成一种高效的数据结构,以便于快速...

    Lucene常用的Demo

    掌握这些基础后,你就可以进一步探索Lucene的高级特性,如近实时搜索、多线程索引、复杂查询语法等。记住,实践是检验理解的最好方式,动手尝试这些示例,结合官方文档,你的Lucene技能将得到显著提升。

    搜索引擎的搭建(Lucene)代码

    本篇将重点讨论如何使用Java和Lucene库来构建一个基础的搜索引擎。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种搜索应用场景。 首先,我们需要了解Lucene的基本组件。主要包括以下几...

    Lucene 索引的简单使用

    Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的全文检索库,它提供了文本检索的核心工具,使得开发者能够快速地在应用程序中实现高级的搜索功能。本篇文章将详细阐述如何使用Lucene来创建和查询索引,...

    lucene实例lucene实例

    本篇文章将详细探讨Lucene的实例应用,以及如何通过实例来理解和掌握这一技术。 一、Lucene的基本概念 1. 文档(Document):在Lucene中,文档是信息的基本单位,可以理解为数据库中的一条记录,包含多个字段...

    lucene入门小例子

    文档是Lucene处理的基本单位,可以看作是存储信息的对象,比如一篇文章或者一封电子邮件。每个文档由多个字段组成,每个字段有特定的含义,如标题、内容、作者等。字段可以被设置为可搜索或不可搜索,这会影响到索引...

    lucene表达式处理查询

    本篇文章将深入探讨Lucene表达式处理查询的原理、语法及示例。 ### 1. Lucene表达式查询基础 Lucene表达式查询是基于Analyzer和QueryParser实现的,它们负责将用户的输入转换为可执行的查询对象。Analyzer用于分词...

    Lucene初探,一个初级的LuceneDemo

    Lucene提供了一系列高级功能,如`BooleanQuery`、`PhraseQuery`、`WildcardQuery`等,可以根据需求灵活使用。 通过学习和实践这个LuceneDemo,你可以对Lucene有一个初步的认识,了解如何创建、索引和搜索文档。随着...

    lucene.zip

    除了基本的索引和搜索,Lucene还提供了许多高级特性,如模糊搜索、短语搜索、字段限制搜索、评分机制等。同时,可以通过继承和组合现有的Analyzer、Filter和Query类来自定义自己的逻辑,以满足特定的应用需求。例如...

    Lucene+原理与代码分析完整版

    本篇文章将深入探讨Lucene的核心原理、主要组件以及关键代码分析,旨在帮助开发者更深入地理解和运用这一强大的搜索工具。 一、Lucene概述 1.1 全文搜索引擎基础 全文搜索引擎不同于传统的索引数据库,它能够对...

Global site tag (gtag.js) - Google Analytics