问题描述
|
我有一个带有“ 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用作解决问题的时间很长。