使用Luke Lucene进行索引

简介: 目录luke 简介luke下载及安装luke 使用打开lukeOverview选项卡Documents选项卡search选项卡Commits选项卡Plugins选项卡导出索引为XML检查索引正确性总结1. luke 简介luke###是一个用于Lucene/Solr/Elasticsearch 搜索引擎的,方便开发和诊断的 GUI(可视化)工具。
目录
  1. luke 简介
  2. luke下载及安装
  3. luke 使用
  • 打开luke
  • Overview选项卡
  • Documents选项卡
  • search选项卡
  • Commits选项卡
  • Plugins选项卡
  • 导出索引为XML
  • 检查索引正确性
  1. 总结

1. luke 简介

img_0586fb1d7ddee1e201796203cfdf4132.png

luke###

是一个用于Lucene/Solr/Elasticsearch 搜索引擎的,方便开发和诊断的 GUI(可视化)工具。它有以下功能:

  • 查看文档并分析其内容(用于存储字段)
  • 在索引中搜索
  • 执行索引维护:索引运行状况检查;索引优化(运行前需要备份)
  • hdfs读取索引
  • 将索引或其部分导出为XML格式
  • 测试定制的Lucene分析工具
  • 创建自己的插件

根据索引搜索的流程

img_e80e034b48f2be25c873b9dbae47bcc6.png
来源:[Lucene(使用 Luke 查看索引) ](https://hacpai.com/article/1472637616329?m=0)

2. luke 下载及安装

官方下载地址:https://github.com/DmitryKey/luke/releases

img_eb460cac5945dd4838c354246537065d.png

最新版本是 luke - 6.5.0,发布于2017年5月。
luke - 6.5.0 - luke - release.zip包含luke的可执行文件和打包好的jar包,可以通过双击 luke.bat/ luke.sh直接运行在Windows/Mac平台打开可视化界面。
Source code包含luke的Maven项目的源代码。

由于 luke 的兼容性不太好,不同版本的 Lucene 生成的索引要使用对应版本的luke 进行分析,如果版本过低会导致无法正确解析索引。

3. luke 使用

打开luke

在Windows系统下,双击打开luke.bat,启动Luke。选择需要处理的索引位置,点击OK导入索引。

img_8470f208c691317af44e94bf8e32ab00.png
选择需要处理的索引位置

这些是我从solr中拿到的索引文件

img_12f1c43e43602c51fe3a7ac0111e6cb6.png
Lucene索引文件
Overview选项卡

导入成功


img_28b92b07ef435824b802dfc4ccce6916.png

图中,1处显示了统计结果,有1000个Document,17个Field,一共有17807个分词
2处统计了所有的Field,每个Field所包含的分词个数,百分比和编码格式。
3处是索引的详细信息,统计了每个分词出现的词频,以及对应的Field名字。

Documents选项卡

document选项卡用于文档的增删查改,下方的表格就像数据表一样,为我们展示每一个文件的具体数据,我们可以根据文档编号来查找文件。


img_ad21fa634bfd98b64e4713d4853f453d.png
Document

点击Add按钮新增Document;点击Recoonstruct&Edit来更改当前Document的值与属性。

img_2d7779983639e05efed383cee1b6babc.png
修改document内容

在这里可以查看所选择的field的值。这里也可以相当于搜索功能。
img_3f988e10e9dffe28dde054119ebb4c0c.png
选择要查看的field的值

Search选项卡

在这个界面可以进行索引的搜索测试,构造lucene的搜索语句,选择匹配的field字段,并执行查询。也可以选择进行索引的分词器,设置默认字段和重复搜索次数,设置限制查询时间及匹配个数、是否可以模糊匹配、选取哪种相似度的匹配模式、是否选用XML Query模式,还可以查看查询花费的时间等。

img_2358dde2320260e83ab6912fa1e330ba.png
Commits选项卡

Comments选项卡用于查看每个索引文件的大小及相关属性,用于分析索引文件是否需要优化及合并等。


img_1551e0ed09db3e391fe91fe313c15c1a.png
comments选项卡
Plugins选项卡

这个页面是luke提供的各种插件,其中,Analyser Tool提供了一些分词的类,如图为luke分词的一个示例。Hadoop插件支持Hadoop( 0.20.1)的任何文件系统打开索引。


img_30307b1f3c8582c926918abdd410235d.png

Scripting Luke提供了一个JavaScript的交互式Shell,可以在help查看具体使用方法。

img_fcc8f7851f983a5e226816e692386a5a.png
Scripting Luke

Custom Similarity用于设计自定义相似性的插件
img_da4846c976348fe57e9ffb4f9eeb4611.png
Custom Similarity

Vocabulary Analysisi Tool是一个表示索引词汇增长的工具。
img_3f8f064050b62f41c7af460bbd20d6f9.png

Zipf distribution是用于显示术语流行度发行的工具

img_2ea0efcf91b049593279b3b6fcd66216.png
导出索引为xml

Tools->export Index to XML将索引导出为xml格式。

img_2474cd84b9a08b08a438558ed83962d7.png
index导出为xml

基本信息

<?xml version='1.0' encoding='UTF-8'?>
<index>
<info>
 <indexPath>F:\luke\testjson\index</indexPath>
 <fields count='17'>
  <field name='_key'/>
  <field name='_text_'/>
  <field name='_type'/>
  <field name='_version_'/>
  <field name='id'/>
  <field name='img'/>
  <field name='level'/>
  <field name='location'/>
  <field name='materials'/>
  <field name='measurement_size'/>
  <field name='measurement_volumne'/>
  <field name='museum_name'/>
  <field name='name'/>
  <field name='number_museum'/>
  <field name='number_system'/>
  <field name='productionDynasty'/>
  <field name='propertyType'/>
 </fields>
 <numDocs>1000</numDocs>
 <maxDoc>1000</maxDoc>
 <numDeletedDocs>0</numDeletedDocs>
 <numTerms>17807</numTerms>
 <hasDeletions>false</hasDeletions>
 <lastModified>N/A</lastModified>
 <indexVersion>6</indexVersion>
 <indexFormat>
  <genericName>Lucene 5.3 or later</genericName>
  <capabilities>flexible, codec-specific</capabilities>
 </indexFormat>
<directoryImpl>org.apache.lucene.store.SimpleFSDirectory</directoryImpl>

部分索引内容

<field name='level' flags='Id----S-------Dsrtset----'>
<val>一级</val>
</field>
<field name='location' flags='Id----S-------Dsrtset----'>
<val>甘肃省张掖市肃南裕固族自治县</val>
</field>
<field name='materials' flags='Id----S-------Dsrtset----'>
<val>丝</val>
</field>
<field name='measurement_size' flags='Id----S-------Dsrtset----'>
<val>肩宽1.4,腰围宽1.5</val>
</field>
<field name='museum_name' flags='Id----S-------Dsrtset----'>
<val>肃南县民族博物馆</val>
</field>
<field name='name' flags='Id----S-------Dsrtset----'>
<val>乾隆御赐黄龙袍</val>
</field>
<field name='number_museum' flags='Id----S---#i64Dsrtset----'>
<val>62072121800001</val>
</field>
<field name='number_system' flags='Id----S---#i64Dsrtset----'>
<val>9223372036854775807</val>
</field>
<field name='productionDynasty' flags='Id----S-------Dsrtset----'>
<val>清(1616~1911)</val>
</field>
检查索引正确性

Tools->check Index Tool进行索引检查

img_c507d0c4485670053ad8e9b05a267d85.png

4. 总结

通过使用luke 对索引进行分析,我对索引有了更加深刻的理解和认识。luke的功能很全面。对于索引文件方面,我们可以通过使用luke检查索引的正确性,分析索引文件并进行修改和优化,将索引文件转换为易于阅读的XML格式,并且更直观地看到我们的documents;对于分词方面,luke可以加载分词包进行分词,进行词频统计及词汇增长统计,以及术语流行度统计等;对于搜索引擎,我们在构造查询语句之前,可以先使用luke进行查询语句校验,分析查询效率,更好地进行查询优化,这些对于设计一个更优秀的搜索引擎是很有必要的。
参考链接:
http://www.kailing.pub/article/index/arcid/74.html
Luke:Lucene索引查看工具

目录
相关文章
|
3月前
|
数据管理 API Android开发
鸿蒙开发:一文了解桌面卡片
在鸿蒙开发中,服务卡片虽然功能丰富,但也存在一些限制。例如,它不支持极速预览、断点调试和Hot Reload热重载等功能,同时也无法使用setTimeOut。此外,开发过程中还面临其他约束,如不支持导入动态共享包、使用native语言开发或加载native so。目前,服务卡片仅支持基于ArkUI的开发方式,且不支持跨平台开发,仅能使用声明式范式的部分组件、事件、动效、数据管理、状态管理和API能力。
214 3
鸿蒙开发:一文了解桌面卡片
|
6月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
177 15
|
Web App开发 人工智能 安全
操作系统的未来之路:探索下一代技术革新
随着技术的不断进步,操作系统作为计算机硬件与用户之间的桥梁,其重要性不言而喻。本文将深入浅出地探讨操作系统的发展趋势,从云计算、人工智能到量子计算等领域,展望未来可能的技术突破和应用场景。我们将通过具体实例,了解这些前沿技术如何影响操作系统的设计、安全和应用,以及它们如何塑造我们的数字生活。
358 1
|
消息中间件 JavaScript 小程序
Controller层代码这么写,简洁又优雅!
说到 Controller,相信大家都不陌生,它可以很方便地对外提供数据接口。它的定位,我认为是「不可或缺的配角」。 说它不可或缺是因为无论是传统的三层架构还是现在的 COLA 架构,Controller 层依旧有一席之地,说明他的必要性。 说它是配角是因为 Controller 层的代码一般是不负责具体的逻辑业务逻辑实现,但是它负责接收和响应请求。
|
机器学习/深度学习 Ubuntu Shell
在Ubuntu 18.04上安装Anaconda
在Ubuntu 18.04上安装Anaconda
364 1
|
算法 Python
模拟退火算法求解TSP问题(python)
模拟退火算法求解TSP问题(python)
237 0
|
存储 自然语言处理 搜索推荐
Elasticsearch 学习笔记(一)-----Lucene的简介以及索引原理
今天,正式开始学习Elasticsearch,因为Elasticsearch是用Lucene来实现索引的查询功能的,所以,理解Lucene的原理显的尤为重要。
827 0
Elasticsearch 学习笔记(一)-----Lucene的简介以及索引原理
|
安全 JavaScript 机器人
阿里云 语音服务-国内语音服务
阿里云 语音服务-国内语音服务
836 0
阿里云 语音服务-国内语音服务
|
设计模式 缓存 网络协议
网络协议 | 典型协议、B/S模式、C/S模式
网络协议 | 典型协议、B/S模式、C/S模式
588 0
|
自然语言处理 Shell 开发者
使用 luke 工具查看索引库内容|学习笔记
快速学习使用 luke 工具查看索引库内容
523 0
使用 luke 工具查看索引库内容|学习笔记