lucene使用3.0.3_Apache Lucene 5.0.0即将发布!

lucene使用3.0.3

终于,在一系列强大的4.x功能(最近是4.10.2)发布之后,我们终于在努力开发另一个主要的Apache Lucene版本!

没有确切时间的承诺(完成时就完成了!),但是我们已经有一个自愿发布经理 (谢谢您,Anshum!)。

Lucene的一个主要版本意味着所有不推荐使用的API(从4.10.x版本开始)都将被删除,不再支持3.x索引,同时仍支持众多4.x索引格式以实现向后兼容,并且4.10.x分支成为我们的仅修正错误的发行系列(无新功能,无API更改)。

5.0.0已经包含了许多激动人心的更改,我将在下面进行描述,并且随着正在进行的积极开发它们仍在不断发展。

增强索引安全性

5.0.0的许多更改都集中在提供更强大的保护以防止索引损坏。

所有的文件访问现在使用 Java的API的NIO.2 ,给我们更好的错误处理(例如, Files.delete返回一个有意义的异常)与原子重命名沿更安全的提交 ,减少了狰狞的风险“整个指数走了”之类的错误此doozie 。

Lucene的复制模块以及在Lucene之上的分布式服务器(例如Elasticsearch或Solr )必须将索引文件从一个位置复制到另一个位置。 他们这样做是出于备份目的(例如, 快照和还原 ),从一个节点到另一个节点的迁移或恢复分片或添加新副本时的目的。 这样的复制器会尝试增量式复制,因此,如果存在相同的文件名,且具有相同的长度和校验和,则不会再次复制该文件。

不幸的是,这些层有时会有细微的错误(它们很复杂!)。 感谢校验和 (在4.8.0中添加),Lucene已经检测到复制器在复制时是否引起了任何位翻转,这表明Elasticsearch使用的压缩库中存在一个长期存在的令人讨厌的错误 。

在5.0.0版本中,我们可以更进一步,现在通过为每个段和提交分配唯一的ID ( segments_N文件)来检测整个文件是否复制到错误的文件名。 现在,每个索引文件在其标头中记录段ID ,然后在打开索引时对这些ID进行交叉检查。

新的Lucene50Codec还包括进一步的索引损坏检测。

甚至CorruptIndexException本身也得到了改进! 现在,它将始终引用检测到损坏的文件或资源,因为现在这是其构造函数的必需参数。 当检测到更高级别的损坏时(例如,字段信息文件中的字段编号错误),现在产生的CorruptIndexException将声明文件中是否还存在校验和不匹配,从而有助于缩小损坏的可能来源。

最后,在合并期间, IndexWriter现在始终在合并之前检查传入的段是否损坏。 这可能意味着,升级到5.0.0后,合并可能会发现旧版4.x索引中长期存在的潜在损坏。

减少堆使用

5.0.0还包括一些更改,以减少索引和搜索期间的堆使用。

如果您的索引具有1B文档,则在4.10.2缓存单个基于FixedBitSet的筛选器将花费不小的125 MB堆空间! 但是在5.0.0版本中,Lucene现在支持随机可写和可扩展的稀疏位集( RoaringDocIdSetSparseFixedBitSet ),因此所需的堆与设置的位成比例,而不是索引中存在的文档总数。 这些位集还大大简化了MultiTermQuery的重写方式(不再需要CONSTANT_SCORE_AUTO_REWRITE_METHOD ),并且它们提供了比FixedBitSet的线性扫描更快的高级实现。 最后,它们提供了更准确的cost()实现,从而使Lucene可以更好地选择在查询时如何驾驶交叉路口。

新的Lucene50Codec 合并 IndexWriter期间的堆使用率也要低得多 ,因为合并的段的doc值和规范不再完全加载到所有字段的堆中。 现在将它们加载到当前正在合并的一个字段中,然后删除。

现在,默认的规范格式在适当时使用稀疏编码,因此为许多稀疏字段启用规范的索引将在搜索时看到所需堆的大量减少。

解释堆使用的API

如果仍然发现Lucene使用的堆多于预期,则5.0.0有一个新的API可以打印树结构 ,该结构显示递归分解哪些部分正在使用多少堆。 这类似于Lucene的explain API ,该API用于了解文档为什么具有一定的相关性评分,而是应用于堆用法。

它产生如下输出:

_cz(5.0.0):C8330469: 28MB postings [...]: 5.2MB ... field 'latitude' [...]: 678.5KB term index [FST(nodes=6679, ...)]: 678.3KB

与试图凝视Java堆转储相比,这是一种查看堆中正在消耗完什么的更快的方法。

进一步的变化

附加的5.0.0更改很长; 这里是其中的一些:

  • 旧的实验性发帖格式( Sep/Fixed/VariableIntPostingsFormat )已删除。 PulsingPostingsFormat也已删除,因为默认的发布格式已经产生了唯一的条件。
  • FieldCache走了(移动到专用UninvertingReadermisc模块)。 这意味着,当您打算对字段进行排序时,应该使用doc值对该字段建立索引,这比FieldCache快得多,堆消耗更少。
  • TokenizerAnalyzer 不再需要在初始状态下使用Reader
  • 现在, NormsFormat获得了自己专用的NormsConsumer/Producer
  • FieldInfo简化(Lucene的“低级架构”):不再需要normType (它始终是DocValuesType.NUMERIC ),不再需要isIndexed (只需检查IndexOptions
  • 复合文件的处理更为简单,现在处于编解码器的控制之下。
  • 用于对多值字段进行排序的SortedSetSortField从沙箱提升为Lucene的核心
  • PostingsFormat现在写帖子的时候,就像DOC值使用“拉” API。 此功能非常强大,因为您可以采用自己的发布格式进行操作,这些操作需要对发布进行一次以上的遍历操作,例如遍历每个术语的所有发布以决定应使用哪种压缩格式。
  • 诸如IndexWriterConfig和分析组件之类的类的初始化不再需要版本。

我在这里描述的更改只是我们今天针对5.0.0版本进行的排列的快照。 5.0.0仍在积极开发中(欢迎打补丁!),因此此列表将在实际发行完成时更改。

翻译自: https://www.javacodegeeks.com/2014/11/apache-lucene-5-0-0-is-coming.html

lucene使用3.0.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用C/C++实现较完整贪吃蛇游戏

利用空余时间写出了这么一个简单的小游戏,直接使用dos界面运行。那么问题来了,如何让一个字符在dos界面上自由移动???对于这个问题我采用的解决方案是实现gotoxy函数来控制指针位置从而实现字符的移动。那么我们就先来…

php跳转到另外一个方法,PHP 页面跳转到另一个页面的多种方法方法总结

PHP 页面跳转到另一个页面的多种方法方法总结一用 HTTP 头信息也就是用 PHP 的 HEADER 函数 PHP 里的 HEADER 函数的作用就是向浏览器发出由 HTTP 协议规定的本来应该通过 web 服务器的控制指令, 例如声明返回信息的类型 ("Context-type: xxx/xxx"), 页面的属性(&quo…

java 泛型和类型擦除_关于Java泛型和擦除

java 泛型和类型擦除“编译期间擦除泛型”是常识&#xff08;好吧&#xff0c;类型参数和实参实际上是被擦除的&#xff09;。 这是由于“类型擦除”而发生的。 但这是错误的&#xff0c;正如许多开发人员所假设的那样&#xff0c;将<..>符号内指定的所有内容都删除了。 …

PHP中文无法查询,php 中htmlentities导致中文无法查询问题

在php中htmlspecialchars&#xff0c; 将特殊字元转成 HTML 格式,而htmlentities&#xff0c;将所有的字元都转成 HTML 字串 了&#xff0c;下面我来分别简单的介绍。htmlentities用法$str "John & Adams";echo htmlentities($str, ENT_COMPAT);echo "&quo…

C++中的函数汇总(新手必知)!

math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有&#xff1a;1 三角函数double sin (double); double cos (double); double tan (double);2 反三角函数double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double …

艾伦图灵_Java英雄:丹·艾伦

艾伦图灵“ Java英雄 ”系列休息了很长时间。 老实说&#xff0c;我想即使有很多人我想把它包括在这里&#xff0c;它也可能会在茫茫荒野中终结。 丹是其中之一。 我第一次要求他捐款已经差不多一年半了&#xff0c;并且在此期间发生的所有事情使我安然无not。 但是以下内容在J…

26条C++的经典语录,哪几句戳中你的心!

2019年悄悄的已经过了三分之二&#xff0c;C你了解了多少&#xff1f;随着互联网的发展&#xff0c;c作为底层语言的龙头老大&#xff0c;是时候站出来了&#xff01;如何学好C,老夫我利用平生所学&#xff0c;整理出26条C经典语录&#xff0c;希望能帮助到每一个热爱C的同学&a…

java打印等边三角市,java 打印菱形和等边三角形

public class PrintJava {public static void print(int n){for(int i 1;i<n;i){for(int k n-1;k>i;k–){System.out.print(” “);}for(int j 1;j<2*i-1;j){System.out.print(“*”);}System.out.println(“”);}for(int i n-1 ;i>0;i–){for(int k 1;k<n…

java 科学计数_Java和甜蜜的科学

java 科学计数当您使用Java进行开发已有15年之久&#xff0c;并且一位同事要求您帮助他们调试空指针异常时&#xff0c;您不会感到惊讶。 通常&#xff0c;很明显什么是null&#xff0c;唯一要做的就是找出原因。 有时会有些困难&#xff0c;因为有人创建了一系列取消引用的对…

C语言的10大基础算法

算法是一个程序和软件的灵魂&#xff0c;作为一名优秀的程序员&#xff0c;只有对一些基础的算法有着全面的掌握&#xff0c;才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇&#xff0c;包括了经典的Fibonacci数列、简易计算器、回文检查、…

Java的文件流定义,java文件流的问题!急

朋友你好&#xff0c;用使用 javadoc 标记可以做到。具体说明如下&#xff1a;&#xff1a;javadoc 标记是插入文档注释中的特殊标记&#xff0c;它们用于标识代码中的特殊引用。javadoc 标记由“”及其后所跟的标记类型和专用注释引用组成。记住了&#xff0c;三个部分——、标…

sprint boot_Sprint Boot子战争包装

sprint bootSpring Boot建议在构建期间使用嵌入式容器&#xff08;tomcat或码头&#xff09;创建一个可执行jar&#xff0c;并在运行时将此可执行jar作为独立进程使用。 但是&#xff0c;通常将应用程序部署到一个外部容器是很常见的&#xff0c;Spring Boot提供了打包应用程序…

C++实现简单的信息管理系统

本文为大家分享C实现简单的信息管理系统&#xff0c;小编之前在学习的时候也要做一些管理系统&#xff0c;在网上查了许多资料&#xff0c;现在我把资料分享给大家&#xff0c;希望能够帮助到大家。#include <stdio.h> #include <stdlib.h> #include "file.…

php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传

一、创建上传方法public function uploadimg(){$image $_FILES[file];$filebase file_get_contents($image[tmp_name]);$upimg $this->uploadImage($filebase);$upfile[code] 0;$upfile[msg] 上传成功;$upfile[data][src] $upimg;$upfile[data][title] $image[name];…

jaxb_JAXB众所周知的秘密

jaxb介绍 我重新发现了Java向大众提供的库。 当我第一次阅读该规范时&#xff0c;我很困惑&#xff0c;以为我需要所有这些特殊工具来实现。 我最近发现&#xff0c;只需要一些注释和一个POJO。 杰克斯 JAXB代表XML绑定的Java体系结构。 这种体系结构允许开发人员将来自类的数…

C# 面向对象三大特性:封装、继承、多态

面向对象有封装、继承、多态这三个特性&#xff0c;面向对象编程按照现实世界的特点来管理复杂的事物&#xff0c;把它们抽象为对象&#xff0c;具有自己的状态和行为&#xff0c;通过对消息的反应来完成任务。这种编程方法提供了非常强大的多样性&#xff0c;大大增加了代码的…

行车记录仪设置php,行车记录仪怎么调设置

行车记录仪设置方法如下&#xff1b;1、视频分辨率视频分辨率一直是厂家着力宣传的卖点&#xff0c;从最初的高清720P、全高清1080P到现在的超高清2K&#xff0c;车主朋友们也都耳熟能详。一般行车记录仪的分辨率提供以下几个选项&#xff1a;1080FHD、720P、WVGA、VGA。视频分…

gtest 测试部分_全部关于测试–第2部分

gtest 测试部分这是有关测试的系列文章的第二篇。 在第一部分中&#xff0c;我解释了在开发测试时需要具备的心态。 或者&#xff0c;换句话说&#xff0c;开发可测试的代码。 在这一部分中&#xff0c;我将介绍一些测试方法的技术。 我将描述的技术可以看作是如何将思维定势转…

C++面试常见问题整理汇总(面试者必看哦!)

1. 继承方式public   父类的访问级别不变#include <iostream> using namespace std; class base { public: void printa() { cout <<"base"<< endl; } protected: void printhello() { cout <<"helo"<< endl; } p…

java servlet applet,详解Java Servlet与Applet比较

Java Servlet与Applet相似之处&#xff1a;◆它们不是独立的应用程序&#xff0c;没有main()方法。◆它们不是由用户或程序员调用&#xff0c;而是由另外一个应用程序(容器)调用。◆它们都有一个生存周期&#xff0c;包含init()和destroy()方法。Java Servlet与Applet不同之处&…