2008-08-29 25 views
54

मैं किसी वेबसाइट के लिए खोज कार्यक्षमता को कार्यान्वित करना चाहता हूं (मान लीजिए कि यह SO के समान है)। मैं इस तरह की चीजों की Google खोज का उपयोग नहीं करना चाहता हूं।मैं वेबसाइट में खोज कार्यक्षमता कैसे कार्यान्वित करूं?

मेरा प्रश्न है:

मैं यह कैसे लागू करते हैं?

  1. खोजें सभी आवेदन में डेटाबेस जब उपयोगकर्ता अपने क्वेरी देता है:

    दो तरीकों मैं के बारे में पता कर रहा हूँ रहे हैं।

  2. इंडेक्स मेरे पास मौजूद सभी डेटा और इसे कहीं और स्टोर करें (जैसे Google करता है)।

क्या कोई मुझे बता सकता है कि किस तरह से जाना है? पक्ष और विपक्ष क्या होते हैं?

बेहतर, क्या ऐसा करने के कोई बेहतर तरीके हैं?

उत्तर

33

Lucene का प्रयोग करें,
http://lucene.apache.org/java/docs/

अपाचे Lucene एक उच्च प्रदर्शन, पूर्ण विशेषताओं पाठ खोज इंजन जावा में पूरी तरह से लिखा पुस्तकालय है। यह लगभग किसी भी एप्लिकेशन के लिए उपयुक्त तकनीक है जिसके लिए पूर्ण-पाठ खोज, विशेष रूप से क्रॉस-प्लेटफ़ॉर्म की आवश्यकता होती है।

यह जावा और नेट में उपलब्ध है। यह एक जेन फ्रेमवर्क मॉड्यूल के रूप में php में भी उपलब्ध है।

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

+0

यदि आप लुसीन पर विचार कर रहे हैं तो आपको वास्तव में सौर परियोजना को देखना चाहिए। इसे – sclarson

4

आप xapian और omega फ्रंट एंड पर एक नज़र रखना चाहते हैं। यह अनिवार्य रूप से एक टूलकिट है जिस पर आप खोज कार्यक्षमता बना सकते हैं।

1

इस तक पहुंचने का सबसे अच्छा तरीका इस बात पर निर्भर करेगा कि आप अपने पृष्ठों को कैसे बनाते हैं।

यदि वे अक्सर कई अलग-अलग रिकॉर्ड्स से बना होते हैं (जैसा कि मुझे लगता है कि स्टैक ओवरफ्लो पेज हैं), इंडेक्सिंग दृष्टिकोण बेहतर परिणाम देने की संभावना है जब तक कि आप डेटाबेस पर पृष्ठों को प्रभावी ढंग से पुनर्निर्माण में बहुत अधिक काम नहीं करते पक्ष।

आपके सूचकांक दृष्टिकोण के साथ होने वाला नुकसान समय के आसपास बारी है। कामकाज हैं (जैसे Google की साइटमैप सामग्री), लेकिन वे सही होने के लिए भी जटिल हैं।

यदि आप डेटाबेस पथ के साथ जाते हैं, तो यह भी पता चले कि आधुनिक खोज इंजन सिस्टम बहुत बेहतर काम करते हैं यदि उनके पास लिंक करने के लिए लिंक डेटा है, इसलिए डेटाबेस में 'पृष्ठों' के बीच संबंधों को समझने वाला सिस्टम ढूंढने का सकारात्मक प्रभाव होगा ।

0

यह आपके प्रश्न के लिए कुछ हद तक ऑर्थोगोनल है, लेकिन मैं अत्यधिक रीस्टफुल खोज के विचार की अत्यधिक अनुशंसा करता हूं। यही है, ऐसी खोज करने के लिए जो कभी नहीं किया गया है, वेबसाइट एक क्वेरी/खोज/को पोस्ट करती है। एक खोज फिर से चलाने के लिए, वेबसाइट जीईटी/खोज/{कुछ आईडी}

इसके बारे में कुछ अच्छे दस्तावेज हैं, उदाहरण के लिए here

(यही कारण है, कहा कि मैं, अनुक्रमण जहां संभव चाहते, हालांकि यह एक अनुकूलन है, और इस तरह समय से पहले हो सकता है।)

-1

आप आवेदन जावा ईई ढेर का उपयोग करता है और आप Hibernate उपयोग कर रहे हैं आप Compass Framework उपयोग कर सकते हैं बनाए रखने के हैं आपके डेटाबेस की खोज योग्य अनुक्रमणिका। कम्पास फ्रेमवर्क हुड के नीचे Lucene का उपयोग करता है।

एकमात्र पकड़ यह है कि आप अपनी खोज अनुक्रमणिका को दोहराना नहीं कर सकते हैं। इसलिए आपको इंडेक्स टेबल को पकड़ने के लिए क्लस्टर डेटाबेस का उपयोग करना होगा या कम्पास फ्रेमवर्क 2.x में जोड़े गए नए ग्रिड आधारित इंडेक्स स्टोरेज मैकेनिज्म का उपयोग करना होगा।

1

यदि आप माइक्रोसॉफ्ट प्लैटफॉर्म पर हैं तो आप इंडेक्सिंग सेवा का उपयोग कर सकते हैं। यह आईआईएस वेबसाइटों के साथ बहुत आसानी से एकीकृत करता है।

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

एक Google करें और आपको बहुत कुछ मिलेगा!

30

यह इस बात पर निर्भर करता है कि आपकी वेबसाइट कितनी व्यापक है और आप स्वयं को कितना करना चाहते हैं।

आप एक कस्टम खोज जोड़ने के लिए, गूगल काम करते हैं और आगे की संभावनाओं के बिना एक एक छोटे वेबसाइट चला रहे हैं (शायद एक sitemap जोड़ने) और google custom search का उपयोग करें।

यदि आप एक एसक्यूएल इंजन के साथ मध्यम साइट चलाते हैं तो अपने एसक्यूएल इंजन की खोज सुविधाओं का उपयोग करें।

आप J2EE या नेट का उपयोग Lucene, एक महान, शक्तिशाली खोज इंजन या उसके नेट क्लोन lucene.Net

जैसे कुछ भारी सॉफ्टवेयर ढेर चलाते हैं तो आप अपने आवेदन से करने के लिए सार अपनी खोज को चाहते हैं और एक्सएमएल/एचटीटीपी और जेएसओएन एपीआई के साथ एक भाषा तटस्थ तरीके से इसे पूछने में सक्षम होने के लिए, solr पर एक नज़र डालें। सौर पृष्ठभूमि में ल्यूसीन चलाता है, लेकिन इसमें एक अच्छा वेब इंटरफ़ेस जोड़ता है।

+3

सेवा के रूप में लुसीन के रूप में सोचें मेरे पास इसके बारे में एक सवाल है। क्या मैं इंट्रानेट साइट के लिए Google कस्टम खोज को कार्यान्वित कर सकता हूं? अगर मैं ऐसा करता हूं तो क्या मैं अपनी कंपनी को जोखिम में डालता हूं? मैं अपना खुद का तर्क नहीं लिखूंगा। – Richie

+0

Google कस्टम खोज बीटीडब्ल्यू को मार दिया गया है। माइक्रोसॉफ्ट के पास बिंग मुझे लगता है कि एक विकल्प है। – demaniak

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