solr:查找最后/最高唯一键和范围搜索

问题描述

| 我有一个带有“ uniqueKey”的lucene索引
<uniqueKey>ID</uniqueKey>
据我所知,此键必须是\“ text \”(不是int或long)。
<field name=\"ID\" type=\"string\" indexed=\"true\" stored=\"true\"/>
一个小型应用程序使用lucene索引来仅在那些自该应用程序上次运行以来添加的记录中进行搜索。 为了实现该目标,我正在尝试以下方法。 加载最后一个ID(来自flatfile) 进入变量$ oldID 获取当前(最后/最高)ID 从Solr / lucene到变量 $ currentID 在之间执行范围搜索 $ oldID和$ currentID 将$ currentID保存到平面文件中 下一次搜索/下一次运行 不幸的是,我注意到一个问题: A.)如何找到最高的ID? 或B.)我如何将唯一键作为数字而不是文本/字符处理 我尝试过这样的事情:
http://localhost:8080/solr/select/?defType=func&q=max(ID,0)&fq=ID:[$oldID+TO+$currentID]&fl=ID
...返回奇怪的想法:\“ 999999 \”为最高值。这是不正确的,因为最高的ID是1043725。我认为这是因为ID是一个文本字段 C.)也许还有其他方法只能在最后添加的recoreds上进行搜索? 感谢您的任何帮助!     

解决方法

Solr \的uniqueKey字段可以支持Solr支持的任何数据类型类。基本的Lucene索引本身将所有存储/索引的数据视为文本,而Solr管理转换以根据数据类型处理索引的数据。 您所指的字符串字段类型限制是是否已在solr配置中启用QueryElevationComponent。如果尚未启用该功能,则可以将uniqueKey用作解决问题的时间很长。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...