java程序信息检索图形界面_java编程开发中的信息检索功能特点分析

java编程语言是我们在开发大型应用的时候使用非常多的一种编程语言类型,下面我们就一起来了解一下关于java编程中的信息检索功能都有哪些类型。

df33745b5a91d603cae9331aa370b938.png

IndexDeletionPolicy:Lucene 开放对 commit point 的管理,通过对 commit point 的管理可以实现例如

snapshot 等功能。Lucene 默认配置的 DeletionPolicy,只会保留新的一个 commit point。

Similarity:搜索的核心是相关性,Similarity 是相关性算法的抽象接口,Lucene 默认实现了 TF-IDF 和 BM25

算法。相关性计算在数据写入和搜索时都会发生,数据写入时的相关性计算称为 Index-time boosting,计算 Normalizaiton

并写入索引,搜索时的相关性计算称为 query-time boosting。

MergePolicy:Lucene 内部数据写入会产生很多 Segment,查询时会对多个 Segment 查询并合并结果。所以 Segment

的数量一定程度上会影响查询的效率,所以需要对 Segment 进行合并,合并的过程就称为 Merge,而何时触发 Merge 由 MergePolicy

决定。

MergeScheduler:当 MergePolicy 触发 Merge 后,执行 Merge 会由 MergeScheduler

来管理。Merge 通常是比较耗 CPU 和 IO 的过程,MergeScheduler 提供了对 Merge 过程定制管理的能力。

Codec:Codec 可以说是 Lucene 中核心的部分,定义了 Lucene 内部所有类型索引的 Encoder 和

Decoder。Lucene 在 Config 这一层将 Codec 配置化,主要目的是提供对不同版本数据的处理能力。对于 Lucene

用户来说,这一层的定制需求通常较少,能玩 Codec 的通常都是玩家了。

IndexerThreadPool:管理 IndexWriter 内部索引线程(DocumentsWriterPerThread)池,这也是

Lucene 内部定制资源管理的一部分。

FlushPolicy:FlushPolicy 决定了 In-memory buffer 何时被 flush,默认的实现会根据 RAM

大小和文档个数来判断 Flush 的时机,FlushPolicy 会在每次文档 add/update/delete 时调用判定。

MaxBufferedDoc:Lucene 提供的默认 FlushPolicy 的实现 FlushByRamOrCountsPolicy 中允许

DocumentsWriterPerThread 使用的大文档数上限,超过则触发 Flush。

RAMBufferSizeMB:Lucene 提供的默认 FlushPolicy 的实现 FlushByRamOrCountsPolicy 中允许

DocumentsWriterPerThread 使用的大内存上限,超过则触发 flush。

RAMPerThreadHardLimitMB:除了 FlushPolicy 能决定 Flush 外,Lucene 还会有一个指标强制限制

DocumentsWriterPerThread 占用的内存大小,当超过阈值则强制 flush。

Analyzer:即分词器,这个通常是定制化多的,特别是针对不同的语言。

并发模型

IndexWriter 提供的核心接口都是线程安全的,并且内部做了特殊的并发优化来优化多线程写入的性能。IndexWriter

内部为每个线程都会单独开辟一个空间来写入,这块空间由 DocumentsWriterPerThread 来控制。整个多线程数据处理流程为:

多线程并发调用 IndexWriter 的写接口,在 IndexWriter 内部具体请求会由 DocumentsWriter

来执行。DocumentsWriter 内部在处理请求之前,会先根据当前执行操作的 Thread 来分配

DocumentsWriterPerThread。

每个线程在其独立的 DocumentsWriterPerThread 空间内部进行数据处理,包括分词、相关性计算、索引构建等。

数据处理完毕后,在 DocumentsWriter 层面执行一些后续动作,例如触发 FlushPolicy 的判定等。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值