2008-09-16 19 views
17

रेल अनुप्रयोग पर रूबी में एक खोज इंजन बनाने के लिए कई प्लगइन विकल्प हैं। इनमें से कौन सा सबसे अच्छा है?रूबी पर रूबी में खोज के लिए सबसे अच्छा विकल्प क्या है?

उत्तर

16

सोचते हुए स्फिंक्स में यह परिभाषित करने के लिए अधिक संक्षिप्त वाक्यविन्यास है कि कौन से फ़ील्ड और कौन से मॉडल अनुक्रमित हैं।

दोनों UltraSphinx और सोच रही थी स्फिंक्स (हाल ही में) अल्ट्रा शांत सुविधा है जो वस्तुओं के कारण भौगोलिक निकटता में ले जाता है है।

अल्ट्रास्फिनक्स में यह मॉडल को लोड करने के साथ परेशान करने वाली समस्याएं हैं (यह पूरे रेल स्टैक को लोड नहीं करता है, इसलिए आप त्रुटियों का निदान करने के लिए अजीब और कठिन हो सकते हैं, जिन्हें स्पष्ट require कथन जोड़कर संभाला जाता है)।

हम नई परियोजनाओं पर स्फिंक्स सोच का उपयोग करें, और UltraSphinx जो भू सामग्री का उपयोग परियोजनाओं पर।

+2

उत्सुक, यदि दोनों भौगोलिक सामग्री के लिए समर्थन करते हैं, तो "नई परियोजनाओं पर सोचने वाले स्फिंक्स का उपयोग क्यों करें, और परियोजनाओं पर अल्ट्रास्फिनक्स जो भौगोलिक सामग्री का उपयोग करते हैं"? –

0

मैं स्फिंक्स सोच का उपयोग किया है और यह बहुत अच्छा लगता है, लेकिन मैं समय सभी विकल्पों का मूल्यांकन करने के लिए किया था नहीं किया है।

0

मैं सोच स्फिंक्स की सलाह देते हैं। यह मेरी राय में सबसे तेज़ विकल्प है।

0

मैंने फेरेट का उपयोग किया है और यह मेरे उद्देश्यों के लिए अच्छा काम करता है, लेकिन मैंने अन्य विकल्पों का मूल्यांकन नहीं किया है।

4

मैं केवल फेर्रेट/acts_as_ferret कॉम्बो (विरासत निर्णय) एक ग्राहक परियोजना पर इस्तेमाल किया है। मैं दृढ़ता से अन्य विकल्पों को देखने की सलाह देता हूं।

aaf बहुत नाजुक है और यदि आप config में एक गलती करते हैं या अगर किसी कारण से आप aaf में एक बग मारा एक रोते रोकने के अपने रेल एप्लिकेशन ला सकता है।

इस तरह के एक मामले में, बजाय बस बाहर crapping खोज की कार्यक्षमता होने के लिए, किसी भी नियंत्रक कार्रवाई एक अनुक्रमित मॉडल को छू पूरी तरह से असफल और एक अपवाद को बढ़ा देंगे। बादा कौन है, एचएमके?

0

एक विकल्प मैं प्रयास नहीं किया है सी ++ आधारित Xapian

5

अपने दोस्तों में से एक के द्वारा प्रयोग किया एक ठोस विकल्प Solr, मूल जावा आधारित Lucene का उपयोग कर एक खोज इंजन है।रेल के साथ इसका उपयोग करने के लिए, निश्चित रूप से एक act_as प्लगइन, acts_as_solr है।

उन्होंने हाल ही में Montreal on Rails पर कॉम्बो प्रस्तुत किया और how to use acts_as_solr on his blog का एक अच्छा और संपूर्ण अवलोकन प्रदान करता है।

यह स्पष्ट रूप से फ्रेंच उच्चारणों का भी समर्थन करता है।

0

हम http://hyperestraier.sourceforge.net/ का उपयोग कर रहे हैं, जो विरासत में मिला था। अन्य इंजनों में नहीं देखा है, लेकिन hyperestraier आवश्यक सभी हुक प्रदान करता है। खोज सूचकांक की स्थापना हालांकि जटिल है। शायद आसान विकल्प उपलब्ध हैं।

10

अधिक प्रश्न के साथ इस प्रश्न को पहले here से पूछा गया है।

5

मैं इस सटीक प्रक्रिया के माध्यम से अभी जा रहा हूं, जबकि मेरे पास वास्तविक अनुभव नहीं है, मैंने कई विकल्पों का शोध करने में कई घंटे बिताए हैं। यहां मैंने जो कुछ सीखा है, वह है:

  • * स्फिंक्स - गति और कार्यक्षमता के लिए अच्छी प्रतिष्ठा लेकिन स्फिंक्स को पूर्णांक कुंजी की आवश्यकता है और मेरा मॉडल GUID का उपयोग करता है; ThinkingSphinx ने हाल ही में GeoSpatial
  • Acts_As_Solr के लिए समर्थन की घोषणा की - एक उच्च-मात्रा वाली साइट वाले मित्र द्वारा अनुशंसित; मूल रचनाकारों ने इस पर काम करना बंद कर दिया है और दस्तावेज ढूंढना मुश्किल है; जावा सर्वलेट
  • Acts_As_Ferret की आवश्यकता है - का उपयोग करने के लिए आसान है, लेकिन आलोचकों का कहना है कि इसके अस्थिर
  • सीमित जानकारी के साथ दो अन्य Acts_As_Indexed कर रहे हैं और Acts_As_Searchable

के बहुत सारे मैं दस्तावेजीकरण पर मेरे प्रयास के साथ एक स्प्रेडशीट है उन सभी के फायदे और नुकसान। अगर कोई इसे देखने में दिलचस्पी लेता है और/या इसे सही करने में मेरी सहायता करता है, तो बस मुझसे संपर्क करें। एक बार जब मैं इसे सटीक जानता हूं तो मैं इसे कहीं भी पोस्ट करूंगा।

यदि आपकी सामान्य प्राथमिक कुंजी है तो मेरी सिफारिश अल्ट्रास्फिनक्स या थिंकिंग स्पिंक्स को आजमाएगी। मैं अच्छे दस्तावेज, फीचर सेट, और प्रोजेक्ट कितना सक्रिय प्रतीत होता है, के आधार पर Acts_As_Xapian को आजमाने की कोशिश कर रहा हूं।

1

मैं act_as_ferret का उपयोग कर रहा हूं। इसे कॉन्फ़िगर करना और आम तौर पर तेज़ करना आसान है। अंतर्निहित सक्रिय रिकॉर्ड कार्यक्षमता काफी उपयोगी है: आपकी खोज मेल खाने वाले रिकॉर्ड्स को ढूंढने के बाद आप किसी भी परिस्थिति को लागू कर सकते हैं या अन्य मॉडलों में शामिल हो सकते हैं।

स्फिंक्स के विपरीत, जब आप नया डेटा जोड़ते हैं तो आपको अपने सभी रिकॉर्ड फिर से इंडेक्स करने की आवश्यकता नहीं होती है। After_save और after_update हुक हैं जो फेरेट डीबी में अपना नया रिकॉर्ड डालेंगे। यह मेरे लिए बड़े बिकने वाले बिंदुओं में से एक था।

आप मास इंडेक्स के लिए अपने डेटा की क्या ज़रूरत है, भाल निश्चित रूप से acts_as_sphinx की तुलना में धीमी (3 का एक पहलू से) है। मैंने मॉड्यूल को फिर से इंडेक्स करने के लिए अपनी खुद की विधि लिखना समाप्त कर दिया जो स्फिंक्स जितनी जल्दी काम करता है - यह मूल रूप से नई अनुक्रमणिका बनाने के लिए रिकॉर्ड द्वारा रिकॉर्ड जाने के बजाय डीबी से सभी डेटा प्रीलोड करता है।

भाल प्रलेखन मूल बातें के लिए अच्छा है, लेकिन यह थोड़ा विरल है एक बार आप अधिक जटिल खोजों, प्रकार में मिल और एक रिमोट सूचकांक की मेजबानी के लिए एक DRB सर्वर का उपयोग कर। ऐसा कहा जा रहा है, यह act_as_sphinx से अधिक परिपक्व उत्पाद महसूस करता है, हालांकि मेरे पास स्फिंक्स के साथ सीमित अनुभव है।

0

यह इस बात पर निर्भर करता है कि आप किस डेटाबेस का उपयोग कर रहे हैं। मैं सोलर का उपयोग करने की अनुशंसा करता हूं क्योंकि यह अस्पष्ट खोज के लिए बहुत अच्छे विकल्प प्रदान करता है और इसमें एक महान क्वेरी पार्सर है। नकारात्मकता यह है कि आपको इसके लिए एक अलग प्रक्रिया चलाना है।मैंने फेरेट का भी उपयोग किया है, लेकिन सूचकांक में बहु-थ्रेडेड पहुंच के संदर्भ में यह कम स्थिर पाया गया है। मैंने स्फिंक्स की कोशिश नहीं की है क्योंकि यह केवल MySQL और Postgres के साथ काम करता है।

0

मैं एक अलग विकल्प का उपयोग कर रहा हूं जो आश्चर्यजनक रूप से अच्छी तरह से काम किया गया था। मैं jruby का उपयोग कर रहा हूँ और सीधे ल्यूसीन से बात कर रहा हूँ।

मैंने अतीत में act_as_solr का उपयोग किया है और कुछ मुद्दों में भाग गया है। मुख्य रूप से यह प्रत्येक एआर सेव के लिए एक तुल्यकालिक कॉल करता है। यह बहुत बुरा नहीं है, लेकिन मेरी स्थिति में कभी-कभी सहेजने के लिए कई सिंक्रोनस कॉल होते हैं और कभी-कभी मोंगल से अधिक समय लेते हैं और मुझे ऐसा लगता है कि मुझे एक मोंगेल टाइमआउट अपवाद (या ऐसा कुछ)

0

सोच रहा है स्फिंक्स Ultrasphinx से बेहतर विकल्प है, जो छोड़ दिया जाता है, लेकिन, सामान्य रूप से, एक्सपियन के पास स्फिंक्स की तुलना में एक अधिक शक्तिशाली इंजन है और रीयलटाइम खोज को लागू करने के लिए आसान है।

0

मैं act_as_ferret की अनुशंसा करता हूं। लेकिन हालांकि कठिन हिस्सा यह है कि इसे अपने सर्वर में सफलतापूर्वक चलाने और चलाने के लिए, एक बार ऐसा करने में आपको कोई समस्या नहीं है क्योंकि फेरेट सर्वर हर बार कोई नया अपडेट होने पर आपकी अनुक्रमणिका को अपडेट करने के लिए अलग पृष्ठभूमि प्रक्रिया के रूप में चल रहा है। इसके अलावा, यह हमारे लिए अपाचे के साथ mongrel में महान काम कर रहा है।

0

मैं भी सही समाधान की तलाश में हूं। पहले मैं थिंकिंग स्फिंक्स के साथ गया, जो ठीक काम करता था। लेकिन जब से मैं अपने वेबपैप को Heroku पर होस्ट करने का इरादा रखता हूं, तो एकमात्र विकल्प Solr का उपयोग करना है। हालांकि, सबसे बड़ी कमी यह है कि मुख्य acts_as_solr मणि का विकास मई 2008 के बाद बंद हो गया है। तो यह मेरे स्वाद के लिए बहुत पुराना है। मैंने अभी Sunspot को एक उन्नत विकल्प के रूप में और हालिया अपडेट के साथ पाया है, इसलिए यह एक है जिसे मैं विचार करने जा रहा हूं।

एक और विकल्प हेरोोक ऑफ़र सोलर पर आधारित होस्टेड इंडेक्स सर्वर के लिए जाना है, जिसका नाम Websolr है। आवश्यक मणि websolr-acts_as_solr भी सौभाग्य से बहुत अद्यतित है।

1

यदि आप मेरे जैसे साझा होस्टिंग सेवा (Bluehost) का उपयोग कर रहे हैं, तो आपके विकल्प प्रदाता द्वारा प्रदान किए जाने वाले तक सीमित हो सकते हैं। मेरे मामले में, मुझे ल्यूसीन या सोलर जैसे एक अलग सर्वर को चलाने और रखने के लिए एक अच्छा और भरोसेमंद तरीका नहीं मिला।

इसलिए, मैं ज़ापियन के साथ गया और यह मेरे लिए अच्छा काम कर रहा है। रेल के लिए 2 प्लगइन्स हैं जिन पर मैंने शोध किया है: act_as_xapian और xapian_fu। पहला आपको जल्दी से जा रहा है, लेकिन ऐसा अब प्रतीत नहीं होता है। मैंने अभी xapian_fu के साथ काम करना शुरू कर दिया है।

1

यदि कोई अभी भी रुचि रखता है, तो अब उपयोग करने की नवीनतम चीज़ लोचदार खोज है। इसके लिए टायर या लोचदार खोज-रेल जैसे रत्न उपलब्ध हैं। यह ल्यूसीन पर आधारित है, जैसे सौर, जावा-आधारित। सोलर वास्तव में इस परियोजना के साथ एकीकृत है ...

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