2013-02-14 12 views
10

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

मैं यह भी समझता हूं कि "फ़िल्टरिंग पहलुओं की टैगिंग को भी अनुमति देता है, ताकि आप अपनी क्वेरी के लिए लौटाए गए सभी पहलुओं को शामिल करने के लिए पहलुओं को टैग कर सकें", जैसे कि किसी और ने भी सही उत्तर दिया।

जो मुझे यह समझ में नहीं आता है, यही कारण है कि कोई भी क्यू का उपयोग करेगा, क्योंकि एफक्यू मेरे द्वारा देखे गए सभी उत्तरों और पुस्तकों के आधार पर इतना बेहतर प्रतीत होता है।

छोड़कर, मुझे यकीन है कि शायद एक कारण है कि दोनों मौजूद हैं।

मुझे यह पता लगाना है कि मेरे उपयोग के मामले में सबसे अच्छा क्या है - दस्तावेज़ीकरण में उपयोगी उदाहरणों में कमी है।

  • मेरे दस्तावेजों: तारीख, ग्राहक, रिपोर्ट, और कुछ अन्य क्षेत्रों
  • 1 व्यवसाय तारीख = 35 लाख दस्तावेजों।
  • दस्तावेजों की कुल संख्या 250 मिलियन है और गिनती (60 तिथियां * 8000 ग्राहक * रिपोर्ट के 1000s)
  • मैं दिनांक, ग्राहक, रिपोर्ट पर पहलू करता हूं, और मैं पहलुओं की टैगिंग का उपयोग करता हूं।
  • यूआई समग्र रूप से किसी भी ई-कॉमर्स साइट की तरह दिखता है, उदाहरण: अमेज़ॅन, बाईं ओर के पहलुओं के साथ।
  • स्कोरिंग का उपयोग नहीं किया जाता है।

व्यवसाय नियम # 1: तारीख हमेशा प्रत्येक क्वेरी में उपस्थित रहनी चाहिए।

व्यवसाय नियम # 2: 99% प्रश्न नवीनतम तारीख का उपयोग करने जा रहे हैं, लेकिन रैंडम क्लाइंट और यादृच्छिक रिपोर्ट।

एक तथ्य: हमने यह निर्धारित किया है कि यह धीमा है, खोज नहीं कर रहा है।

प्रश्न:

को देखते हुए इस खोज मापदंड है, और इन तरीकों से एक प्रश्न लिखने के लिए:

ए) q = तारीख: 20,130,214 और ग्राहक: जो & facet.field = तारीख & facet.field = ग्राहक ...

बी) q = तारीख: 20,130,214 & fq = ग्राहक: जो & facet.field = तारीख & facet.field = ग्राहक ...

012,

सी) q = ग्राहक: जो & fq = तारीख: 20,130,214 & facet.field = तारीख & facet.field = ग्राहक ...

डी) q = *: * & fq = तारीख: 20,130,214 & fq = ग्राहक: जो & facet.field = तारीख & facet.field = ग्राहक ...

  • जो ऊपर की आप सबसे अच्छा और क्यों होगा लगता है?याद रखें, एफक्यू फ़िल्टरिंग में 20130214
  • के खिलाफ सबसे अधिक प्रश्न चलने जा रहे हैं, और फिर क्यू शर्त लागू होती है, या दूसरी तरफ?

आज, मेरे पास डी है) सभी मामलों में उपयोग किया जाता है, लेकिन मुझे संदेह है कि यह गलत है और ओओएम सोलर (संस्करण 3.6) में कारण बन रहा है।

आपकी मदद के लिए धन्यवाद!

उत्तर

3

आपके सवालों के जवाब के लिए:

  • अपने व्यापार नियम के आधार पर, मैं सुझाव है कि आप जब से तुम हमेशा (छानने) दिनांक मान के आधार पर परिणामों को सीमित कर रहे fq मूल्य में तारीख डाल दिया और यह लग रहा है जैसे तारीख मूल्यों को सोलर द्वारा पुन: उपयोग किया जा सकता है। और क्यू में यादृच्छिक क्लाइंट की खोज हो सकती है और आवश्यक मूल्यों की रिपोर्ट हो सकती है।

  • उपयोगकर्ता पहली बार यूआई की बात आती है, जब से तुम केवल पहलुओं दिखा रहे हैं मैं तुम्हें q=<id field>:* का उपयोग जहां <id field> सूचकांक में अपने दस्तावेज़ आईडी है और यह भी rows=0 सेट सुझाव है। फिर fq मान में दिनांक प्रतिबंध का उपयोग करें। निर्दिष्ट rows=0, केवल क्वेरी एक पहलू का उत्पादन करेगा संदर्भ Solr - Getting facet counts without returning results

+1

आपके उत्तर के लिए धन्यवाद। अगर मैं fq = 20130214 और q = क्लाइंट कहता हूं: Paige, क्या इसका मतलब यह है कि सोलर को पहले क्लाइंट के लिए 250 मिलियन दस्तावेज़ स्कैन करना होगा: Paige और फिर उन्हें फ़िल्टर करने के लिए केवल 20130214 को छोड़ दें? यदि ऐसा है, तो क्या यह तिथि (3.5 मिलियन डॉक्स) के लिए सबकुछ ढूंढने के लिए और अधिक कुशल नहीं होगा और फिर ग्राहक के आधार पर फ़िल्टर करें? और यहां तक ​​कि बड़ा सवाल: मैं कैसे कह सकता हूं, क्योंकि ऐसे कोई उपकरण नहीं हैं जो दोनों परिदृश्यों को आजमाने की अनुमति देते हैं। –

+1

हां, मुख्य खोज निष्पादित होने के बाद फ़िल्टर क्वेरी निष्पादित की जाएगी। लेकिन आपके दस्तावेज़ संख्याओं के आधार पर, आप उन्हें चारों ओर स्विच करना चाहेंगे और 'q = 20130214 और fq = क्लाइंट: Paige' जैसा कि आप जानते हैं कि आपको केवल तारीख के साथ 3.5 मिलियन दस्तावेज़ों की खोज करने की आवश्यकता होगी और फिर उन्हें सही क्लाइंट वापस करने के लिए फ़िल्टर करें । सही दृष्टिकोण निर्धारित करने के लिए कठिन और तेज़ नहीं है, यह जरूरतों और परिदृश्य पर निर्भर करता है। परीक्षण प्रश्नों के लिए उपकरण तक, मैं अत्यधिक सोलरमीटर की सिफारिश करता हूं - http://code.google.com/p/solrmeter/ –

+0

धन्यवाद Paige। आपने दो अलग-अलग उत्तरों (व्यवसाय नियम और संख्याओं के आधार पर) में अलग-अलग उत्तर दिया, इसलिए मैंने अपना मूल प्रश्न स्पष्ट किया। क्या आप फिर से देख सकते हैं। इसके अलावा, सोलरमीटर यह नहीं दिखाता कि सोलर क्वेरी को संसाधित करने के बारे में कैसे जाता है- यह कैश कैसा दिखता है, किस क्रम में, यह क्या पाता है, आदि। यदि आप Sybase (या किसी भी RDBMS) से परिचित हैं, तो मैं एक की तलाश में हूं पर 'सेट शोप्लान' के बराबर धन्यवाद, -डेट्री। –

17

q क्वेरी अनुरोध के मुख्य क्वेरी है।
यह वह है जो आपको वास्तव में कई क्षेत्रों में खोज करने की अनुमति देगा।
q क्वेरी यह तय करेगी कि प्रत्येक दस्तावेज़ में कौन सा स्कोर है और इसलिए प्रासंगिकता गणना में हिस्सा लेगा।

q=*:* एक ही स्कोर के साथ सभी दस्तावेज वापस कर देगा।

fq दस्तावेजों को फ़िल्टर करने के लिए उपयोग की जाने वाली फ़िल्टर क्वेरी है और खोज से संबंधित नहीं है।
तो यदि आपके पास कोई फिक्स वैल्यू है जिसे आप फ़िल्टर करना चाहते हैं तो अपने परिणामों को सीमित करने के लिए फ़िल्टर का उपयोग करना चाहिए।
fq परिणाम स्कोरिंग को प्रभावित नहीं करता है।
फ़िल्टरिंग करते समय, सौर फ़िल्टर कैश का उपयोग करता है ताकि बाद के फ़िल्टर क्वेरी के प्रदर्शन को बढ़ाया जा सके।

तो आदर्श रूप से, आपको यह जांचना चाहिए कि आवश्यकता क्या मांगती है, यदि आप खोज करना चाहते हैं तो हमेशा q का उपयोग करना चाहिए और यदि आप परिणामों को फ़िल्टर/सीमित करना चाहते हैं तो आपको fq का उपयोग करना चाहिए।

Facets केवल परिणामों में एक एडन हैं और आपके परिणामों को प्रभावित नहीं करते हैं।

+0

SO पर इन सभी उपयोगी उत्तरों को पोस्ट करने के लिए धन्यवाद !! –

+0

क्यों एक डाउनवोट? कृपया एक टिप्पणी जोड़ें ताकि अगर मैं अब मान्य नहीं हूं तो मैं अपना जवाब सुधार सकता हूं !!!! – Jayendra

+1

@ जयेंद्र एक मौलिक क्वेरी: यह हमेशा कहता है कि fq दस्तावेजों को फ़िल्टर करने के लिए प्रयोग किया जाता है और कैश के माध्यम से बाद की खोजों में मदद करता है। मान लीजिए कि मेरे पास 100 एम डॉक्स 100 श्रेणियों में समान रूप से फैले हैं। अगर मैं एक क्वेरी (क्यू) और fq = cat: 5 का उपयोग करता हूं, तो पहले स्थान पर केवल उस बिल्ली के साथ दस्तावेज़ों को खोजेगा: 5 या सभी 100 एम खोजें और फिर बिल्ली को फ़िल्टर करें: 5? यदि पूर्व मान्य है, तो खोज गति भी तेज है (न केवल बाद में खोज फ़िल्टर कैश पर टक्कर मारती है)। – Ethan

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