lucene升级至5.1版本出现 :IllegalStateException: IllegalStateException: unexpected docvalues type NONE"

这前使用的lucene4.7版本,程序正常,现在升级到5.1时,索引文件正常,但在搜索的时候,出现:IllegalStateException: unexpected docvalues type NONE" on fields  Use
UninvertingReader or index with docvalues.

后才知道,是因为Sort排序对索引字段有了新的要求,即使用DocValuesField的字段才能进行排序。

查询doc文档,最终解决方法如下:

原来的代码:dfDocument.add(new LongField("id", Long.parseLong(id),Field.Store.YES));

现在的代码:dfDocument.add(new NumericDocValuesField("id",Long.parseLong(id)));

替换后一切OK,如果你想在查询中获取ID的字段值,那就多加一条排序的字段,那保留原代码,然后加一条:

dfDocument.add(new NumericDocValuesField("sortid",Long.parseLong(id)));

查询的时候,使用new Sort(new SortField("sortid", SortField.Type.LONG, true));作为排序。

时间: 2024-08-29 01:20:25

lucene升级至5.1版本出现 :IllegalStateException: IllegalStateException: unexpected docvalues type NONE"的相关文章

RHEL5.4 openssh升级至OpenSSH_7.4p1版本-shell处理

客户30台RHEL5.4系统的openssh需要升级到OpenSSH_7.4p1版本 #cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga) # uname -r 2.6.18-164.el5PAE # uname -m i686 由于防止远程连接中断,需要开启telnet服务,防火墙放开tcp 23端口,同时下载所需文件,故写了2个脚本 脚本1:下载软件,防火墙放开tcp 23 端口,开启te

OpenSSH升级至7.5版本

环境:CentOS release 6.8 (Final) 步骤: 1.安装Dropbear代替OpenSSH (不影响升级,安全起见) 2.升级zlib 3.更新pam的rpm包 4.编译安装openssl 5.编译安装openssh 6.验证版本 准备相关的包 openssh下载地址:http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/ openssl相关包下载:http://www.openssl.org/source/

【Lucene】4.X版本使用Sort排序并评分

貌似3.X的版本, 只要使用了Sort之后就不会对文档进行评分了,然后看了4.X的IndexSearch的search()方法,里面有一个search()的重载方法: public TopFieldDocs search(Query query, Filter filter, int n, Sort sort, boolean doDocScores, boolean doMaxScore) 只要把doDocScores参数设置为true(默认为false), 就可以进行排序且评分了.

CentOS openssh升级至7.4版本

1.原环境: cat /etc/issue CentOS release 6.5 (Final) ssh -V OpenSSH_7.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 2.备份ssh目录: cp -rf /etc/ssh /etc/ssh.bak 3.首先查看本机telnet安装情况,如有输出则无需再进行安装:rpm -qa telnet-server 4.如无telnet则需进行安装,避免ssh升级出现问题,无法远程管理:yum install telne

Lucene 索引优化

    转自---http://www.codeceo.com/article/lucene-index.html 1 数值数据类型索引优化 1.1 数值类型索引问题 lucene本质上是一个全文检索引擎而非传统的数据库系统,它基于倒排索引,非常适合处理文本,而处理数值类型却不是强项. 举个应用场景,假设我们倒排存储的是商家,每个商家都有人均消费,用户想查询范围在500~1000这一价格区间内的商家. 一种简单直接的想法就是,将商家人均消费当做字符串写入倒排(如图所示),在进行区间查询时:1)遍

Lucene学习笔记

师兄推荐我学习Lucene这门技术,用了两天时间,大概整理了一下相关知识点. 一.什么是Lucene Lucene即全文检索.全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置.当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程. 二.Lucece全文检索和数据库检索的区别 三.Lucene的原理 (1)索引库操作原理 注意:这里面有两个关键的对象:分别是IndexWriter和IndexSearcher. 执行增删改操作用的是

Lucene索引的初步创建

从百度上知道的,Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言).Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎.Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供.Luce

HttpClient 版本变化 转载

转载地址:http://my.oschina.net/u/577453/blog/173724 最近用到了HttpClient写爬虫,可能我有新版本强迫症,老是喜欢用新版本的东西(虽说新版本不一定好用),然后就用了HttpClient 4.3.HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样, 3.X是这样的 HttpClient httpClient=new DefaultHttpClient

一步一步跟我学习lucene(17)---lucene搜索之expressions表达式处理

有时候我们在做lucene的结果展示的时候可能需要对多个列的内容进行计算,根据多个field对应的值做数值方面的运算. lucene自4.6版本起,提供了用于运算的expression模块: expression分为两部分: org.apache.lucene.expressions:提供了字段绑定和相关的表达式参数传递的功能: org.apache.lucene.expressions.js:提供了表达式定义的功能. Expression类使用示例 Expression是提供document的