2012-03-22 29 views
7

bende raylar modelleri ile 3 app: Ben kategorilere göre olayları filtrelemek ve sayıları ile kategori ağacı işlemek gerekirDüşünce Sfenksinde Çok Değerli Özellikler (MVA) ve yüzler nasıl kullanılır?

class Event < ActiveRecord::Base 
    has_many :event_categories 
    has_many :categories, through: :event_categories 
end 

class EventCategory < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :event 
end 

class Category < ActiveRecord::Base 
    belongs_to :parent, class_name: 'Category' 
    has_many :subcategories, class_name: 'Category', foreign_key: :parent_id 
end 

:

Music Festivals (10) # id: 1 
-- Classic (2)  # id: 3 
-- Pop (8)   # id: 8 
IT Conferences (2) # id: 10 
-- Ruby (1)   # id: 11 
-- PHP (1)   # id: 12 
... 

böyle yapmaya çalıştım:

define_index do 
    has category_values, type: :multi, facet: true 
end 

before_save :collect_category_values 

def collect_category_values 
    # traversing events categories 
    # putting string like '10/1/3' to self.category_values 
    # which contains all event's categories and subcategories 
end 

Bu kod harika arama sonuçları üretir, ancak facet sayımları hüzünlendirir:

01 Yerine

:

{ :category_values => { 1 => 10, 3 => 2, 10 => 2, 11 => 1 } 

Ve en komik kısmı ben endeksi değiştirmeye karar verdiğinde başladı ama onu yeniden unuttum: Bu kirli kesmek

# old attribute --> has category_values, type: :multi, facet: true 
has categories(:id), as: :category_id, type: :multi facet: true 

: sfenks eski kullanmaya başlar Yeni model mantığı ile indeks sorgulaması. Sayılar ve arama sonuçları mükemmeldir. Ancak, elbette, eğer indeksleri yeniden kurmaya, dağıtmaya veya ikna etmeye çalışırsak, sayımlar tekrar bozulur.

Soru şu: MVA birlikte nasıl birlikte kullanılır? Aynı sorunla '09 den

Bulunan sorular,: http://www.mailinglistarchive.com/[email protected]/msg00473.html http://groups.google.com/group/thinking-sphinx/browse_thread/thread/e06cfab6aad327d2

teşekkür ederiz.

cevap

2

ekleyin: all_ints => true bu özellik tanımına.

Aynı sorunu yaşadım ve düzeltdim. buradan kontrol edin:

https://github.com/pat/thinking-sphinx/issues/357

Bu sizin için yararlı olabilir.

+1

[Sadece bağlantıya verilen yanıtlar] (http://meta.stackoverflow.com/tags/link-only-answers/info) önerilmediğini unutmayın, SO yanıtları bir çözüm arayışının son noktası olmalıdır (Yine de zamanla bayat eğilimi olan referanslardan başka bir duraklama). Lütfen bağlantıyı referans olarak tutarak, burada tek başına bir özet eklemeyi düşünün. – kleopatra