2012-03-22 4 views
7

मुझे मिल गया है रेल मॉडल के साथ 3 एप्लिकेशन:थिंकिंग स्पिंक्स में मल्टी-वैल्यू एट्रिब्यूट्स (एमवीए) और पहलुओं का एक साथ उपयोग कैसे करें?

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 
... 

मैं इस तरह करने की कोशिश की:

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 

यह कोड ठंडा खोज परिणाम उत्पन्न करता है लेकिन पहलू की गणना दुखी होती है:

{ :category_values => { '1/3' => 2, '10/11' => 1 } } 
बजाय

:

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

और सबसे मजेदार हिस्सा तब शुरू हुई जब मैं सूचकांक बदलने का फैसला किया है, लेकिन यह के पुनर्निर्माण के लिए भूल गया:

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

यह एक गंदा हैक है: स्फिंक्स वर्ष उपयोग करने के लिए शुरू होता है नए मॉडल तर्क के साथ सूचकांक क्वेरी। गणना और खोज परिणाम बहुत अच्छे हैं। लेकिन, ज़ाहिर है, अगर हम इंडेक्स, तैनाती या smth पुनर्निर्माण करने की कोशिश करेंगे, तो गणना फिर से तोड़ दिया जाएगा।

सवाल यह है कि एमवीए का एक साथ पहलुओं का उपयोग कैसे करें?

एक ही समस्या के साथ '09 से मिले सवाल,: http://www.mailinglistarchive.com/[email protected]/msg00473.html http://groups.google.com/group/thinking-sphinx/browse_thread/thread/e06cfab6aad327d2

धन्यवाद।

उत्तर

2

जोड़ें: all_ints => true उस विशेषता परिभाषा के लिए।

मेरे पास एक ही समस्या थी और इसे ठीक किया गया। कृपया इसे यहाँ की जाँच करें:

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

यह आपके लिए उपयोगी हो सकता है।

+1

ध्यान दें कि [लिंक-केवल उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, तो SO समाधान समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम अभी तक संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

संबंधित मुद्दे