solr:找到最后/最高的唯一密钥&范围搜索

时间:2011-04-27 14:32:31

标签: php lucene solr

我有一个带有“uniqueKey”的lucene索引

<uniqueKey>ID</uniqueKey>

据我所知,这个密钥必须是“text”(不是int或long)。

<field name="ID" type="string" indexed="true" stored="true"/>

一个小应用程序使用lucene索引只搜索那些自上次运行该应用程序以来添加的记录。

为了达到这个目标,我正在尝试以下方法。

  1. 加载最后一个ID(来自flatfile) 进入变量$ oldID
  2. 获取当前(最后/最高)ID 从Solr / lucene到变量 $ currentID
  3. 执行范围搜索 $ oldID和$ currentID
  4. 将$ currentID保存到平面文件中 下一次搜索/下次运行
  5. 不幸的是我发现了一个问题:

    A。)如何找到最高ID?

    或B.)我如何将唯一键作为数字处理,而不是text / char

    我尝试过类似的东西:

    http://localhost:8080/solr/select/?defType=func&q=max(ID,0)&fq=ID:[$oldID+TO+$currentID]&fl=ID
    
    返回奇怪的

    ...认为:“999999”为最高值。这不正确,因为最高ID是1043725.我认为这是因为ID是文本字段

    C。)也许还有其他方法只能搜索最后添加的记录?

    感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:2)

Solr的uniqueKey字段可以支持Solr支持的任何数据类型类。虽然底层Lucene索引本身将所有存储/索引数据视为文本,但Solr管理转换以根据数据类型处理索引数据。

您指的是string field-type restriction,如果您在solr配置中启用了QueryElevationComponent。如果您尚未启用该功能,则可以使您的uniqueKey解决问题。