0
大文字と小文字の混在した列のソートに役立つ「下限」関数の使用についてはthis questionを読んでいます。もう少し複雑な属性を使って同様のことをしたいと思います。インデックス・プロジェクトに、私はTSを使用していSphinxの考え方:列を結合して索引付けし、LOWER関数も使用しますか?
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
:まず、私は基本的な多対多の関係持っ
class Project
define_index
indexes name, :sortable => true
indexes [people.first_name, people.last_name], :as => :person, :sortable => true
has created_at, category_id
set_property :delta => true
end
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(...)」機能を実装することができますか?または、私の実際の質問。これをインデックス化するにはどうすればよいですか?人物フィールドでプロジェクトをソートし、大文字と小文字を区別できないようにしますか?
スーパー。ありがとうございました! – robertwbradford
ありがとう、素晴らしい答え。 ( – Aamir
2つの理由:ドキュメントは完璧ではありませんが(パッチはもちろん歓迎です)、この機能は現在のところTS v3にはありませんv2/v2)なぜ私はカットされていないのか分かりませんが(スフィンクスが文字列属性を正規化する場合は必要ないかもしれませんが)、テストやパッチも歓迎します。 – pat