2012-05-01 17 views
6

में कस्टम क्वेरी पैरामीटर जोड़ने का सही तरीका मैं वर्तमान में एक सोलर क्लाइंट/सर्वर जोड़ी चला रहा हूं जो ठीक काम कर रहा है।सोलर

हालांकि, कुछ मामलों में फ़िल्टर क्वेरी (fq पैरामीटर) जो सोलर को भेजी जाती है वह काफी बड़ी है (हजारों वर्ण हो सकती है) और इसे छंटनी नहीं की जा सकती है। चूंकि क्वेरी पार्सिंग only a fraction of the overall time लेता है, इसलिए मैं इस क्वेरी भाग को ज़िप करने और इसे Solr पर भेजने के साथ प्रयोग करना चाहता हूं।

मैं क्लाइंट को संशोधित करने की सोच रहा था इसलिए fq के बजाय यह एक और पैरामीटर (उदा। zfq) का उपयोग करता है। सौर तब निर्णय ले सकता है - अगर इसे zfq प्राप्त होता है, तो यह इसका उपयोग करता है और डेटा को fq में डीकोड करता है। अन्यथा यह सामान्य के रूप में व्यवहार करना चाहिए।

उपरोक्त प्राप्त करने का मानक तरीका क्या है? ऐसा लगता है कि SearchHandler, requestHandler, <queryParser (solrconfig.xml दोनों में) और कई अन्य हैं और मुझे पूरा यकीन नहीं है कि कम से कम घुसपैठ क्या है। मुझे लुसीन/टोमकैट के साथ काफी भरोसा है लेकिन सौर डेटा संरचनाओं के बारे में ज्यादा जानकारी नहीं है।

+2

एकल 'fq' में हजारों वर्ण सही नहीं लगते हैं। सीमाओं के आसपास काम करने की कोशिश करने के बजाय, खुद से पूछें * क्यों * आप उन सीमाओं को मार रहे हैं। अपने * वास्तविक * मुद्दे का वर्णन करें। –

+0

असली मुद्दा इस प्रश्न के दायरे से बाहर है। लेकिन अगर आप इसे सुनना चाहते हैं - निश्चित रूप से, कोई समस्या नहीं! लम्बाई कैसे लागू होती है इसकी लंबाई आती है। व्यापक अनुमति सेट वाले ग्राहकों के लिए, फ़िल्टर क्वेरी इस तरह दिखती है: "*: *-श्रेणी: 1 और-श्रेणी: 2 और ... -श्रेणी: एन"। पैटर्न दोहराने के रूप में संपीड़न के लिए एक आदर्श उम्मीदवार कौन सा है। – mindas

+0

क्या आपने दस्तावेज़-स्तर की सुरक्षा के बारे में यह जेआईआरए मुद्दा देखा है? https://issues.apache.org/jira/browse/SOLR-1834 –

उत्तर

0

क्या आपने इस वाक्यविन्यास का उपयोग करने के बारे में सोचा है: श्रेणी: (1 2 3 4 ... एन)। इससे स्ट्रिंग को 90% तक कम करना चाहिए। ज़िप से बेहतर है।

+0

मेरी इच्छा है कि बक्षीस का समय समाप्त नहीं हुआ है, आपके उत्तर पोस्ट करने में थोड़ा सा समय लगेगा :( – mindas

1

आप अपने सौर कंटेनर को बहुत लंबे यूआरएल ले सकते हैं: Tomcat here, Jetty here

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

<requestHandler name="for_some_queries" class="solr.SearchHandler" default="true"> 
    <!-- default values for query parameters --> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="fq">MY VERY LONG FQ</str> 
    </lst> 
    </requestHandler> 

लेकिन मैं एक बेहतर डिजाइन के लिए मौरिसियो शेफ़र के साथ सहमत हैं।

+0

'fq' कभी भी ऐसा नहीं रहता है इसलिए इसे डिफ़ॉल्ट बनाने से मदद नहीं मिलेगी। मेरा वास्तविक सवाल यह है कि सोलर का विस्तार कैसे करें और इस समस्या को हल करने का तरीका नहीं है। – mindas

+0

तब खराब धारणा :-) लेकिन आपके ऐप कंटेनर की हेडर लम्बाई (और इसलिए यूआरएल लम्बाई) में वृद्धि नहीं होगी, आपकी समस्या का समाधान? – aitchnyu

+0

मैंने पहले से ही ऐसा किया है, लेकिन मैं संग्रह क्वेरी के साथ प्रयोग करना चाहता हूं और देख रहा हूं कि यह विलंबता को कम करने में मदद करता है या नहीं। – mindas