接上篇《4.lucene索引的删除和更新》 注:演示程序的lucene版本为8.0.0
上一篇我们讲解了lucene索引的删除和更新操作,本篇我们继续讲解索引的操作,如何对索引进行加权操作,和Luke的简单演示。
一、索引加权
对于索引而言,有时候是需要一些排序的。哪些索引比较重要,哪些索引不是那么重要,这就牵扯到加权的问题,我们通过加权,来对索引进行一个排序调整。根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面。
如何对索引来加权呢?在lucene6.0之前的时候,我们可以通过创建索引时,去设置Field的Boost激励因子,或者直接设置整个Document的Boost激励因子,来达到加权的效果。Boost激励因子数值越大,权值越大,越容易被搜索到:
或直接设置整个Document的Boost:
注:如果不设置Boost,默认权值都是1.0。
而在lucene6.0版本之后,移除了setBoost方法,也就是在创建索引的时候不能去设置权值了。那么lucene6.0之后如何给索引加权呢?
其实在lucene6.0之后,加权操作不在添加索引的时候去设置了,因为一旦固化了索引的权值,以后索引权值变化的时候,需要重新生成索引,比较麻烦。lucene6.0之后的加权策略,变成了检索时,可以为检索条件设置权值,这样就会优先查询比较重要的检索条件。这里使用到了BoostQuery类,其中BoostQuery构造函数源码:
也即是使用BoostQuery,在查询的时候,会将query对象,boost权值包装进去,然后通过符合查询语句,来突出Query的优先级。例如:
这里的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教学视频》