我有一个使用thinking_sphinx进行搜索的rails应用程序。我的问题是返回的结果首先是大写字母,小写字母是在底部。我想混合它们,以便“A”和“a”都出现在'B'之前。这是我正在使用的方法:
Company.search(query, :star => true, :page => params[:page], :per_page => 20, :order => :name, :sort_mode => :asc)
答案 0 :(得分:3)
Maurício的回答几乎是在正确的轨道上 - 但那是为了改变Sphinx索引字段的文本。当你进行排序时,你是通过属性(不使用charset表转换)来做的。
您需要做的是将name out的排序属性与字段分开,并强制属性版本使用小写:
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
答案 1 :(得分:1)
您必须配置sphinx来转换输入,使大写字母变为小写字母。您可以使用"charset_table" config。
执行此操作这里有关于如何使用thinking_sphinx进行配置的complementary tutorial。
答案 2 :(得分:0)
经过多个小时的研究,我得到了一个简单而优雅的解决方案,用于不区分大小写的搜索。只需按照以下方式定义索引即可。
indexes name, as: :name_sort, sortable: :insensitive