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