Ruby on rails 思考狮身人面像:索引组合列并使用较低的函数?
我读过关于使用“LOWER”函数帮助对混合大小写列进行排序的文章。我想做一些类似的事情,但有一点更复杂的属性。首先,我有一个基本的多对多关系:Ruby on rails 思考狮身人面像:索引组合列并使用较低的函数?,ruby-on-rails,sorting,sphinx,thinking-sphinx,Ruby On Rails,Sorting,Sphinx,Thinking Sphinx,我读过关于使用“LOWER”函数帮助对混合大小写列进行排序的文章。我想做一些类似的事情,但有一点更复杂的属性。首先,我有一个基本的多对多关系: class Project < ActiveRecord::Base has_many :project_people has_many :people, :through => :project_people end class ProjectPerson < ActiveRecord::Base belongs_to
class Project < ActiveRecord::Base
has_many :project_people
has_many :people, :through => :project_people
end
class ProjectPerson < ActiveRecord::Base
belongs_to :project
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :project_people
has_many :projects, :through => :project_people
end
这个索引很好,但是当人们的名字中使用大写和小写字母时,我发现了这个问题。我尝试用以下内容替换呼叫:
has ["LOWER(people.first_name)", "LOWER(people.middle_name)", "LOWER(people.last_name)"], :as => :person, :type => :string
但我在重建索引时不断出错:
ERROR: index 'project_core': sql_range_query: Unknown column 'people.first_name' in 'field list' (DSN=mysql://...).
如何实现“LOWER(…)”功能?或者,我真正的问题。如何对其编制索引,以便能够按person字段对项目进行排序,并使其不区分大小写?在第一个示例中(正常列引用,而不是SQL代码段),尝试将
:sortable
设置为:sinsensitive
而不是true
谢谢,回答得很好。我想知道为什么我没有在文档中找到这个答案:(两个原因:文档不是完美的(但补丁当然是受欢迎的!),而且:这个功能目前还不在TS v3中(仅在v1/v2中)。我不太确定为什么它没有进行剪切(如果Sphinx使字符串属性本身正常化,可能不需要),但同样欢迎测试和/或补丁。
ERROR: index 'project_core': sql_range_query: Unknown column 'people.first_name' in 'field list' (DSN=mysql://...).