Lucene 8.5.2演示API

举报
AlbertYang 发表于 2021/02/05 00:56:34 2021/02/05
【摘要】 Lucene 8.5.2演示API 演示模块提供了简单的示例代码来展示Lucene的功能。 另请:说明 配套 包描述org.apache.lucene.demo 用于索引和搜索的演示应用程序。 org.apache.lucene.demo.facet 方面示例代码。 演示模块提供了简单的示例代码...

Lucene 8.5.2演示API

演示模块提供了简单的示例代码来展示Lucene的功能。

另请:说明

配套
描述
org.apache.lucene.demo
用于索引和搜索的演示应用程序。
org.apache.lucene.demo.facet
方面示例代码。

演示模块提供了简单的示例代码来展示Lucene的功能。

Apache Lucene-构建和安装基本演示

关于本文件

本文档旨在作为使用和运行Lucene演示的“入门”指南。它引导您完成一些基本的安装和配置。

关于演示

Lucene命令行演示代码由一个应用程序组成,该应用程序演示了Lucene的各种功能以及如何将Lucene添加到您的应用程序。

设置你的CLASSPATH

首先,您应该下载最新的Lucene发行版,然后将其解压缩到工作目录中。

您需要四个JAR:Lucene JAR,queryparser JAR,通用分析JAR和Lucene演示JAR。提取存档时,您应该在创建的core /目录中看到Lucene JAR文件-它的名称应类似于 lucene-core- {version} .jar。您还应该分别在queryparser,analysis / common /和demo /下看到名为lucene-queryparser- {version} .jar, lucene-analyzers-common- {version} .jar和lucene- demo- {version} .jar的文件。

将所有这四个文件放入Java CLASSPATH中。

索引文件

一旦达到这一目标,您可能会渴望前进。让我们建立一个索引!假设您正确设置了CLASSPATH,只需键入:

 java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}
这将产生一个名为index的子目录 ,其中将包含所有Lucene源代码的索引。

搜索索引类型:

 java org.apache.lucene.demo.SearchFiles
系统将提示您进行查询。输入乱码或拼写单词(例如:“ superca lifragilisticexpialidocious”)。您会看到,lucene源代码中没有任何处理结果。现在尝试输入单词“ string”。那应该返回一堆文件。结果将在每十分之一的结果页面显示,并询问您是否要获得更多结果。

关于代码

在本节中,我们将浏览命令行Lucene演示背后的源代码:在哪里可以找到它们,它们的组成部分以及它们的功能。本部分适用于希望了解如何在其应用程序中使用Lucene的Java开发人员。

源位置

此处讨论的文件直接链接到本文档:

 

索引文件

正如我们在上一个演练中所讨论的那样,IndexFiles类创建一个Lucene索引。让我们看看它是如何做到的。

在主()方法分析命令行参数,则在实例化制备 IndexWriter,打开 Directory,和实例化StandardAnalyzer 和IndexWriterConfig

所述的值-index命令行参数是其中应该存储所有索引信息文件系统目录的名称。如果IndexFiles与在给定的相对路径调用-index命令行参数,或者如果-index没有给出命令行参数,使默认的相对索引路径“ 指数 ”被使用,索引路径将被创建作为当前工作目录的子目录(如果尚不存在)。在某些平台上,索引路径可能在其他目录(例如用户的主目录)中创建。

所述-docs命令行参数值是包含文件的目录的位置被索引。

该-update命令行参数告诉 IndexFiles不删除索引,如果它已经存在。如果未提供-update,则IndexFiles将在索引任何文档之前先将板擦干净。

IndexWriterDirectory使用Lucene 将信息存储在索引中。除了 我们使用的实现之外,还有其他几个Directory子类可以写入RAM,数据库等。FSDirectory

Lucene Analyzer正在处理流水线,这些流水线将文本分解为带索引的标记(又名术语),并可选地对这些标记执行其他操作,例如缩减大小写,同义词插入,过滤掉不需要的标记等。我们使用的分析器是StandardAnalyzer,它使用以下方法创建标记Unicode标准附件#29中指定的Unicode文本分段算法中的分词规则; 将令牌转换为小写;然后过滤掉停用词。停用词是常见的语言词,例如文章(a,an,the等)和其他标记,可能对搜索的价值较小。应该注意的是,每种语言都有不同的规则,您应该为每种语言使用适当的分析器。Lucene当前为多种不同的语言提供了分析器(请参阅lucene / analysis / common / src / java / org / apache / lucene / analysis下的javadocs )。

该IndexWriterConfig实例适用于所有配置的IndexWriter。例如,我们基于-update命令行参数的值将OpenMode设置为在此处使用。

在文件中往下看,实例化IndexWriter之后,您应该看到indexDocs()代码。此递归函数对目录进行爬网并创建Document对象。该 文献仅仅是一个数据对象来表示从文件以及其创建时间和位置的文本内容。这些实例将添加到IndexWriter中。如果提供了 -update命令行参数,则 IndexWriterConfig OpenMode将设置为OpenMode.CREATE_OR_APPEND,并且IndexWriter会 更新而不是将文档添加到索引中通过尝试查找具有相同标识符的已索引文档(在我们的示例中,文件路径作为标识符)将它们添加到索引中;从索引中删除它(如果存在);然后将新文档添加到索引。

搜索文件

SearchFiles类是相当简单的。它主要与合作 IndexSearcher, StandardAnalyzer,(这是在使用IndexFiles类以及)和一个QueryParser。查询解析器由一个分析器构造而成,该分析器用于解释您的查询文本,其解释方式与解释文档的方式相同:查找单词边界,缩小大小写并删除“ a”,“ an”和“ the”等无用的单词。该 Query对象包含的结果,该结果 QueryParser传递给搜索者。请注意,也可以通过编程方式构造一个丰富的Query 对象,而无需使用查询解析器。查询解析器仅启用将 Lucene查询语法解码为相应的 Query对象。

SearchFiles使用 IndexSearcher.search(query,n)返回 TopDocs最大 n次匹配的方法。结果以页面形式打印,按得分(即相关性)排序。

文章来源: albertyang.blog.csdn.net,作者:Albert Yang,版权归原作者所有,如需转载,请联系作者。

原文链接:albertyang.blog.csdn.net/article/details/107038352

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。