【Lucene总结-索引】5.lucene索引_加权操作和Luke的简单演示

接上篇《4.lucene索引的删除和更新》 注:演示程序的lucene版本为8.0.0
上一篇我们讲解了lucene索引的删除和更新操作,本篇我们继续讲解索引的操作,如何对索引进行加权操作,和Luke的简单演示。

一、索引加权

对于索引而言,有时候是需要一些排序的。哪些索引比较重要,哪些索引不是那么重要,这就牵扯到加权的问题,我们通过加权,来对索引进行一个排序调整。根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面。

如何对索引来加权呢?在lucene6.0之前的时候,我们可以通过创建索引时,去设置Field的Boost激励因子,或者直接设置整个Document的Boost激励因子,来达到加权的效果。Boost激励因子数值越大,权值越大,越容易被搜索到:

doc = new Document();
doc.add(new StringField("id",ids[i],Store.YES));
StringField emailField = new StringField("email",emails[i],Store.YES)
if(emails[i].contains("163.com")){//如果邮箱为163的,权值设置高一些
    emailField.setBoost(1.5f);
}
doc.add(emailField);
writer.addDocument(doc);

或直接设置整个Document的Boost:

doc = new Document();
doc.add(new StringField("id",ids[i],Store.YES));
doc.add(new StringField("email",emails[i],Store.YES));
doc.setBoost(1.5f);
writer.addDocument(doc);

注:如果不设置Boost,默认权值都是1.0。

而在lucene6.0版本之后,移除了setBoost方法,也就是在创建索引的时候不能去设置权值了。那么lucene6.0之后如何给索引加权呢?
其实在lucene6.0之后,加权操作不在添加索引的时候去设置了,因为一旦固化了索引的权值,以后索引权值变化的时候,需要重新生成索引,比较麻烦。lucene6.0之后的加权策略,变成了检索时,可以为检索条件设置权值,这样就会优先查询比较重要的检索条件。这里使用到了BoostQuery类,其中BoostQuery构造函数源码:

public BoostQuery(Query query, float boost) {
    this.query = (Query)Objects.requireNonNull(query);
    this.boost = boost;
}

也即是使用BoostQuery,在查询的时候,会将query对象,boost权值包装进去,然后通过符合查询语句,来突出Query的优先级。例如:

Query query1 = queryBuilder.createPhraseQuery("name", "jack");
Query query2 = queryBuilder.createPhraseQuery("content", "to");
//为query1设置boost权值
BoostQuery query3 = new BoostQuery(query1,2.0f);
//因为查询条件有两个,所以设置复合查询
Builder builder = new BooleanQuery.Builder();
builder.add(query3, Occur.MUST);//MUST必要条件
builder.add(query2, Occur.MUST);//MUST必要条件
//因为name的查询语句经过BoostQuery的包装,所以name的优先级更高
BooleanQuery query = builder.build();

这里的BoostQuery用来封装查询对象Query,并为其加权值。对于多个条件的复合查询,可以通过这种设定方式,来指定查询条件的重要程度,以此来获取相关重要程度的查询结果。

二、Luke工具的使用

我们还记得在文件夹中生成的索引文件吗?这里我们可以使用Luke工具对lucene生成的索引文件进行可视化查看。
Luke官方下载地址:https://github.com/DmitryKey/luke/releases
点击下载:

下载完毕解压后,windows系统双击luke.bat执行文件,即可启动Luke:

启动完毕后,界面如下:

我们这里点击“Browse”选择索引所在的文件夹地址,导入相关索引文件进行分析:

点击“ok”后,就可以看到相关的索引信息。
第一个选项卡“Overview”中是索引总览信息:

可以看到左侧是索引中可用Field域的统计,右侧是我们存储的所有索引的Filed的各个value信息以及分词情况,像content我们设置了分词,这里就是被标准分词器分成了一个一个的字符:

而email和name等信息,没有设置分词,所以存储的是整个字符串:

第二个选项卡“Documents”是文档信息:

上面可以进行Term(词)的查询,即是选择一个Term(Filed域中的key),查询相关的value值:

下面使用编号(文档默认从0开始编号)进行进行document的查询,点击箭头可以看到上一个以及下一个document的相关信息;

上图就是查询文档ID是2的Document文档信息。其中的Filed是域的名字,Flags是该域的存储设置,具体的设置项点击“Help”即可查看:

然后Norm为权值,默认为0;value即是该Filed域的存储的值。

第三个选项卡“Search”是检索页面:

我们在右侧的检索窗口,可以输入相关的表达式,直接进行索引相关信息的查询。左侧则是选择相关的Analysis分词器、查询解析器等相关参数,来配置搜索的参数。

第四个选项卡“Analysis”是分词器配置页面:

用来配置分词器类型,默认选项的是标准分词器“StandradAnalyzer”。

第五个选项卡“Commits”是段文件查看页面:

左侧是索引库的所有文件,右侧是相关的段文件信息。

第六个选项卡“Logs”用来展示操作日志:

执行的所有操作日志都会打印在该模块。

参考:
《传智播客Lucene教学视频》
https://juejin.im/entry/59792bee6fb9a03c5f0c4aaf

转载请注明出处:https://blog.csdn.net/acmman/article/details/90548524

### 回答1: lucene-core-4.9.0.jar是Lucene索引擎的核心库文件,它是一个用Java语言编写的开源软件,主要用于实现全文搜索和索引功能。 Lucene是一个高性能的全文搜索引擎库,它提供了一系列用于创建、更新和查询索引的API。对于需要在大量文本数据中进行快速和准确搜索的应用程序来说,Lucene是一个非常好的选择。 核心库文件lucene-core-4.9.0.jar包含了Lucene索引擎的所有核心功能,包括索引的创建和管理、搜索查询的执行、搜索结果的排序和过滤等。通过引入该库文件,开发人员可以在自己的应用程序中使用Lucene提供的功能来实现文本数据的全文索引和搜索。 在使用Lucene时,开发人员可以根据自己的需要,使用lucene-core-4.9.0.jar的API来创建索引,将文档进行分词、过滤和标准化处理,然后将处理后的文档添加到索引中。当需要进行搜索时,可以使用Lucene提供的查询语法和查询API,对索引中的文档进行高效的全文搜索。 除了lucene-core-4.9.0.jar之外,Lucene还提供了其他一些相关的jar文件,例如lucene-analyzers-common.jar和lucene-queryparser.jar等,它们可以用于分析和处理文本数据,以及解析查询语法。通过组合使用这些库文件,开发人员可以更灵活地构建自己的全文搜索应用程序。 总之,lucene-core-4.9.0.jar是Lucene索引擎的核心库文件,它提供了一系列用于创建、更新和查询文本数据索引的API,为开发人员提供了实现全文搜索功能的便利。 ### 回答2: lucene-core-4.9.0.jar是Lucene项目的核心库,它是用Java编写的全文搜索引擎库。Lucene是一个开源项目,旨在提供一个强大且高效的搜索引擎,用于构建各种应用程序,如网站搜索,文本分析和信息检索等。 lucene-core-4.9.0.jar提供了许多关键的功能和类,包括索引创建和管理,查询解析和执行,文本分析和词法处理等。通过使用这个库,开发人员可以轻松地构建自己的搜索应用程序,并实现快速和准确的搜索功能。 在Lucene的使用过程中,开发人员可以通过创建索引来处理需要搜索的文档集合。索引是一个用于快速查找和检索文档的数据结构,它包含了文档中的关键词、位置和其他重要信息。lucene-core-4.9.0.jar提供了一些类来帮助创建和维护索引,在搜索时可以快速定位相关文档。 另外,lucene-core-4.9.0.jar还提供了丰富的查询语法和API,以便开发人员可以根据特定的需求构建和执行复杂的查询。这些查询可以包括布尔逻辑、过滤器、范围查询和模糊匹配等多种形式。通过使用Lucene的查询功能,用户可以快速找到符合其需求的相关文档。 总之,lucene-core-4.9.0.jar是Lucene项目的核心库,提供了全文搜索引擎的关键功能和类。它可以帮助开发人员构建强大的搜索应用程序,实现快速和准确的搜索功能。 ### 回答3: lucene-core-4.9.0.jar 是一个用于构建搜索引擎的Java库。Lucene是一个开源的全文搜索引擎工具包,它提供了用于索引和搜索文本的功能。 lucene-core-4.9.0.jar 是Lucene库的核心组件,用于实现基本的搜索和索引功能。它包含了索引文档和搜索相关内容所需的所有必要类和方法。这个.jar文件是由Lucene 4.9.0版本的源代码编译而成的。 使用 lucene-core-4.9.0.jar,我们可以很方便地在自己的应用程序中实现搜索功能。首先,我们需要构建一个索引,将要搜索的文本内容进行索引化。然后,我们可以使用 Lucene 提供的 API 进行搜索操作,通过关键字或特定的查询语句来搜索索引中的内容。Lucene 提供了丰富的查询语法和搜索算法,可以根据需求进行高级的搜索操作,如模糊搜索、排序、过滤等。 通过使用 lucene-core-4.9.0.jar,我们可以为我们的应用程序添加强大的搜索能力,无论是搜索文件、数据库、网站内容或是其他结构化的数据。Lucene 库已经在众多应用中得到了广泛的应用,包括网站搜索引擎、文档管理系统、电子邮件客户端等。 总之,lucene-core-4.9.0.jar 是一个功能强大且灵活的Java库,可以帮助开发人员快速构建搜索引擎和实现全文搜索功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值