2010-05-07 7 views
5

मैं जेटी का उपयोग कर अपने विंडोज मशीन पर सोलर चला रहा हूं। मैंने Spatial Solr Plugin डाउनलोड किया है जिसे मैं अंततः उठने और चलाने में कामयाब रहा। मैं अपने एएसपीएनटी एमवीसी परियोजना से सोलर के खिलाफ पूछताछ के लिए सोलरनेट का भी उपयोग कर रहा हूं।एक सोलरनेट क्वेरी में स्पेटियल सोलर को कैसे जोड़ें

अब, मेरी अनुक्रमणिका में डेटा जोड़ना ठीक काम करता है और स्पैटलियल टियरअपडेट प्रोसेसर फैक्ट्री भी काम करता है।

समस्या है:

मैं अपने सामान्य Solrnet लाइब्रेरी का उपयोग कर क्वेरी के लिए स्थानिक क्वेरी में शामिल कर सकता। मैंने इसे "ExtraParams" पैरामीटर का उपयोग करके जोड़ने का प्रयास किया है लेकिन यह बहुत अच्छा काम नहीं करता है।

यहां डेटा उदाहरण क्वेरी के साथ स्थानिक क्वेरी को गठबंधन करने का प्रयास करने का एक उदाहरण है। तिथि सीमा क्वेरी स्थानिक क्वेरी इसे से जुड़े बिना ठीक काम करता है:

new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery); 

जो Solr के खिलाफ निम्न क्वेरी में परिणाम:

(({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z]) 

और त्रुटि संदेश मैं वापस पाने:

रिमोट सर्वर ने एक त्रुटि लौटा दी: (400) खराब अनुरोध।

SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars 
eException: Cannot parse '(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit= 
km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:09:49Z TO 2011-05-0 
7T13:09:49Z])': Encountered " <RANGEEX_GOOP> "lng=-2.6257 "" at line 1, column 2 
4. 
Was expecting: 
    "}" ... 

अब, बात सब कुछ ठीक काम करता है अगर मैं Solr वेब व्यवस्थापक पृष्ठ का उपयोग करें और इसके खिलाफ निम्न क्वेरी निष्पादित करता है।

{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London 

SolrNet का उपयोग करके स्थानिक फ़ंक्शन को कॉल करने का सबसे अच्छा/सही तरीका क्या है। क्वेरी स्ट्रिंग में मैन्युअल रूप से क्वेरी के उस बिट को जोड़ने का सबसे अच्छा तरीका है और ऐसा कैसे है?

उत्तर

5

LocalParams in Solr प्रतिनिधित्व करने के लिए LocalParams वर्ग का उपयोग करें:

solr.Query(new LocalParams { 
    {"type", "spatial"}, 
    {"lat", "-51.5224"}, 
    {"long", "-2.6257"}, 
    {"radius", "10000"}, 
    {"unit", "km"}, 
    {"calc", "arc"}, 
    {"threadCount", "2"}, 
} + Query.Field("text").Is("London")); 

यह SolrNet 0.3.0b1 के रूप में उपलब्ध है।

+0

चीयर्स! वास्तव में मुझे क्या चाहिए। मैं मैन्युअल रूप से क्वेरी स्ट्रिंग के साथ गड़बड़ कर काम कर रहा हूं लेकिन आपका समाधान जाने के लिए बेहतर/साफ तरीका है। आपका बहुत बहुत धन्यवाद! – Flo