2010-11-25 18 views
8

का उपयोग कर के आँकड़े मैं Lucene का उपयोग कर एक वेब अनुप्रयोग के एक खोज घटक के विकास कर रहा हूँ। मैं उपयोगकर्ता क्वेरी को एक इंडेक्स में सहेजना चाहता हूं और उपयोगकर्ताओं को वैकल्पिक प्रश्नों का सुझाव देने के लिए और क्वेरी आंकड़े रखने के लिए उनका उपयोग करना चाहता हूं (अक्सर उपयोग किए जाने वाले प्रश्न, शीर्ष स्कोरिंग प्रश्न, ...)।रखते हुए क्वेरी Lucene

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

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

सहायता के लिए धन्यवाद।

उत्तर

1

"मैं बस सूचकांक में प्रश्नों को जोड़ने के बारे में सोच रहा था, लेकिन है कि रास्ते में अनावश्यक डेटा का एक बहुत हो सकता है के बाद से सूचकांक में कई दस्तावेज समान सामग्री होगी"

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

+0

मैंने ऐसा करने के बारे में सोचा, लेकिन मुझे प्रश्नों (कुछ बार इस्तेमाल किए जाने वाले समय, हिट की संख्या) पर कुछ आंकड़े रखने की आवश्यकता है और इसे प्राप्त करने के बारे में सोचने का एकमात्र तरीका यह है कि कई बार सूचकांक में उपयोग किया जाता है और दस्तावेज़ को अपडेट करने से पहले इसे बढ़ाता है, लेकिन यह एक महंगी ऑपरेशन की तरह लगता है। – jbradaric

+0

क्या आप इसे करने के लिए ल्यूसीन से टर्म फ्रीक्वेंसी का उपयोग कर सकते हैं? http://stackoverflow.com/questions/667389/get-term-frequencies-in-lucene। यदि आप रीयल-टाइम में क्वेरी अनुशंसाएं करना चाहते हैं तो आप फ्रीक के समय को पहले से गणना करना और उन्हें स्टोर करना चाहते हैं। – Joel

+0

यदि मैं प्रश्नों को एक अद्वितीय क्षेत्र के रूप में संग्रहीत नहीं करता हूं, तो मैं टर्मफ्रीक्वेंसी का उपयोग कर सकता हूं, लेकिन मैं इससे बचने की उम्मीद कर रहा था। लेकिन ऐसा लगता है कि जब तक समाधान भी मौजूद नहीं होता है, तब तक मुझे प्रश्नों को गैर-अद्वितीय के रूप में स्टोर करना होगा जब तक कि मैं एक बेहतर समाधान नहीं समझता। – jbradaric

1

सबसे पहले, मुझे विश्वास है कि आप मौजूदा सूचकांक से अलग से प्रश्नों की दुकान चाहिए। समस्या अनावश्यक डेटा नहीं है बल्कि आपके सूचकांक को "पानी नीचे" - एक ही इंडेक्स में प्रश्नों को संग्रहीत करना आपकी खोजों की प्रासंगिकता को नुकसान पहुंचा सकता है। इसके लिए कुछ विकल्प हैं:

  • एक अलग लुसीन इंडेक्स का उपयोग करें।
  • उपयोग Solr, दो अलग-अलग cores, दस्तावेज़ों के लिए एक और प्रश्नों के लिए अन्य।
  • एक प्रश्न लॉग का उपयोग करें। प्रश्नों के साथ स्कोर स्कोर करें। पोस्ट-प्रोसेसिंग का उपयोग करके क्वेरी आंकड़े बनाएं। जैसा कि यह एक वेब एप्लीकेशन है, आप संभवतः एक सर्वलेट कंटेनर का उपयोग कर सकते हैं, जैसे कि टोमकैट, इसके लिए लॉग।

दूसरा, Auto-Suggest From Popular Queries Using EdgeNGrams सोलर का उपयोग करके क्वेरी सुझाव के वैकल्पिक कार्यान्वयन का सुझाव देता है।

+0

या वे एक ही इंडेक्स में एक अलग दस्तावेज़ प्रकार के रूप में संग्रहीत किए जा सकते हैं, लेकिन हाँ, अभी भी अलग-अलग सहायक डेटा से वास्तविक डेटा। – Joel

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