0

私のモデルはThinking Sphinxで索引付けされており、acts_as_taggable_onによって提供されたモデルのタグで検索結果をフィルタリングしたいと考えています。私はthis previous questionを読んで、私の検索でフィルタリングクエリとして:conditions => { :tags => 'Comedy' }を使うことができました。Acts_as_taggable_onタグの名前をThinking Sphinxの属性

これはキャッチオールソリューションではありません。デフォルトでは、すべてのテキストはSphinxのインデックスフィールドで検索されるためです。たとえば、Model.search :conditions => { :tags => "Comedy" }を検索すると、タグBlack Comedyの結果も表示されます。私はで提供前の回答時に構築しています

define_index 
    indexes title, :sortable => true 
    has category_tags(:name), :as => :tags 
end 

注:私は、属性の代わりに、フィールドを使用して解決策ですが、私はModel.search :with => { :tags => "Comedy" }を検索するときに有効な結果を得るように見えることはできませんし、私のdefine_indexブロックはこのようになっていることを見ます上記のリンク先の質問。 Answerererはコンテキスト内でタグを索引付けするので、category_tagsメソッドの理由です。

答えて

3
にあなたのインデックスを変更し

define_index 
    indexes title, :sortable => true 
    has "CRC32(category_tags.name)", :as => :tags, :type => integer 
end 

注:category_tags.nameは

をyour_table_name.column_nameとintに変換した後、タグを検索する参照:

Model.search :with => {:tags =>'Comedy'.to_crc32} 

がための一般的な質問を参照してください。 more:http://freelancing-god.github.com/ts/en/common_issues.html

関連する問題