मैं MySQL के साथ एक मूल पूर्ण-पाठ खोज को कार्यान्वित करने की कोशिश कर रहा हूं।रेल पर रूबी में MySQL पूर्ण-पाठ खोज
def self.up
execute 'ALTER TABLE photos ENGINE = MyISAM'
execute 'CREATE FULLTEXT INDEX fulltext_photos ON photos (place, info)'
end
def self.down
execute 'ALTER TABLE photos ENGINE = InnoDB'
execute 'DROP INDEX fulltext_photos ON photos'
end
और यहाँ अपने मॉडल है::
मैं इस प्रवास लिखा
def self.search(*args)
options = args.extract_options!
find_by_sql [ "SELECT * FROM photos WHERE MATCH (place, info) AGAINST (?)", options[:query] ]
end
समस्या यह है कि इस कोड हमेशा एक खाली सरणी देता है।
उदाहरण के लिए:
% Photo.find(:first) => Photo id: 1, place: "Baceno", info: "Era immerso in erba alta." ... % Photo.search(:all, :query => 'baceno') => []
यह माइग्रेशन स्क्रिप्ट बहुत अच्छा काम करती है, लेकिन स्वयं को। डील विधि में ऑर्डर वापस करने के लिए याद रखें, तालिका को वापस InnoDB में बदलने से पहले इंडेक्स को हटा दिया जाना चाहिए अन्यथा आपको विफलता मिलती है। –