【问题标题】:Ordering results in case-insensitive alphabetical order in Sunspot在 Sunspot 中以不区分大小写的字母顺序排序结果
【发布时间】:2025-12-01 05:55:01
【问题描述】:

如何使用 Sunspot 按不区分大小写的字母顺序排列结果?

我在 https://github.com/sunspot/sunspot/wiki/Ordering-and-paginationhttp://wiki.apache.org/solr/FunctionQueryhttps://github.com/sunspot/sunspot#ordering 中找不到任何相关内容

【问题讨论】:

    标签: ruby-on-rails solr sunspot alphabetical


    【解决方案1】:

    我一直在寻找类似的答案,但我没有在 SO 上找到它。但是我偶然发现了这段神奇的代码:string(:sort_title) { title.downcase }
    现在稍微解释一下。 Solr (sunspot) 不允许您按文本类型排序/排序,字符串类型不能不区分大小写。因此我想到了以下解决方案。假设您有一个字段field1,您想使用不区分大小写的排序对其进行排序。然后,您在索引的可搜索部分创建另一个字段,我们将其称为field2,其值为field1.downcase。然后您按field2 订购并检索结果。通过这种方式,您可以同时保留案例类型(在 field1 中,这样可以轻松正确地显示数据)并按案例类型排序(在 field2 的帮助下)。它应该看起来像这样:

    class Test < ActiveRecord::Base
      searchable do
        string(:field1) { your_class_field }
        string(:field2) { your_class_field.downcase(same as above) }
      end
    end
    

    答案对你来说有点晚了,但也许其他人会从中受益!

    【讨论】:

    • 不,对我来说还不算晚,我要修复的错误已经开放了那么久。 >_
    • 希望对您有所帮助:D
    最近更新 更多