通过混合大写和小写来思考狮身人面像
我有一个使用thinking_sphinx进行搜索的rails应用程序。 我的问题是返回的结果首先是大写字母,小写字母是在底部。 我想混合它们,以便’A’和’a’都在’B’之前。 这是我正在使用的方法:
Company.search(query, :star => true, :page => params[:page], :per_page => 20, :order => :name, :sort_mode => :asc)
Maurício的答案几乎是在正确的轨道上 – 但那是为了改变Sphinx为场地编制索引的文本。 当你进行排序时,你是通过属性(不使用charset表转换)来做的。
您需要做的是将name的排序属性与字段分开,并强制属性版本使用小写:
indexes :name has "LOWER(companies.name)", :as => :name_sort
然后搜索成为:
Company.search query, :star => true, :page => params[:page], :per_page => 20, :order => :name_sort, :sort_mode => :asc
您必须配置sphinx来转换输入,使大写字母变为小写字母。 您可以使用“charset_table”配置执行此操作。
这是一个关于如何使用thinking_sphinx配置它的补充教程 。
经过几个小时的研究,我得到了简单而优雅的解决方案,用于不区分大小写的搜索 只需按以下方式定义索引即可。
indexes name, as: :name_sort, sortable: :insensitive