通过混合大写和小写来思考狮身人面像

我有一个使用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