【问题标题】:String length function query in SolrSolr中的字符串长度函数查询
【发布时间】:2014-06-09 20:05:20
【问题描述】:

我需要找到我的集合中某个字段的长度超过某个限制的所有文档。该字段的类型是字符串。 Solr中有返回字符串字段长度的函数查询吗?

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    解决方案是使用 Solr 的正则表达式功能。例如,以下查询检索所有 title 字段至少为 42 的文档:

    title:/.{42}.*/
    

    【讨论】:

    • 我有一个文档,其“描述”字段为 292 个字符和 28 个单词(集合中最大的描述),但不知何故,当我查询 description:/.{71}.*/ 时,有 0 个结果,查询description:/.{70}.*/确实返回了我的文件...我错过了什么?
    • @joey,该字段的类型是什么?
    • org.apache.solr.schema.TextField
    • @snakile 同样的问题在这里:/
    • 是的,这实际上只适用于很长的单词......所以任何大于或等于 42 个字符的单词也是如此。至少这是我在尝试使用这种方法时所看到的
    【解决方案2】:

    开箱即用不支持按长度查询,最明智的方法是创建一个单独的(数字)字段并按此字段查询。

    【讨论】:

    • 所以我必须更改我的架构才能这样做?这是我需要做的一次性事情。最好的方法真的是定义一个长度字段然后把它扔掉吗?
    • 如果是一次性的,您可以iterate over all documents 并手动进行处理。
    • +1 因为您的解决方案有效并且完全没问题,但我想我想出了一个更简单的解决方案。看我的帖子。
    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2014-01-14
    • 2014-08-18
    • 2018-11-11
    相关资源
    最近更新 更多