2013-01-18 50 views
6

मैं नई सोलर 4 भू-स्थानिक खोज के साथ खेल रहा हूं। http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 से एक उदाहरण में जैसे कि मैंने परिणाम इतने की तरह पाने के लिए कोशिश कर रहा हूँ:सोलर 4 भू-स्थानिक खोज में दूरी कैसे प्राप्त करें?

http://localhost:8983/solr/allopenhours/select? 
&q=foobar 
&fq=geo:%22Intersects(Circle(54.729696,-98.525391%20d=0.08992))%22 
&q={!%20score=distance} 
&fl=*,score 

लेकिन यह काम नहीं करता। परिणाम सेट में मैं दूरी और स्कोर फ़ील्ड कैसे प्राप्त कर सकता हूं?

उत्तर

7
संदर्भ निम्न में से एक करने के लिए Spatial Search - Returning the distance आप अपने क्षेत्रों पैरामीटर संपादित कर सकते हैं के अनुसार

:

  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - यह एक उर्फ ​​_dist_
+3

यह निम्न त्रुटि देता है: 'फ़ील्डनाम को पार्स करने में त्रुटि: geodist - पर्याप्त पैरामीटर नहीं: [] ' – andrexus

+0

यहां' geodist() 'फ़ंक्शन http://wiki.apache.org/solr/ का संदर्भ है स्थानिक खोज # geodist _-_ The_distance_function –

+0

'एक मान स्रोत इस क्षेत्र से सीधे उपलब्ध नहीं है। इसके बजाय स्कोर के रूप में दूरी का उपयोग करके एक प्रश्न का प्रयास करें। ' – andrexus

4

में दूरी वापस आ जाएगी जवाब दिया Paige सही है। हालांकि, त्रुटि दी गई क्वेरी के आधार पर दिखाया गया है।

Error parsing fieldname: geodist - not enough parameters:[]

geodist sfield (क्षेत्र है जो दस्तावेज़ में स्थान रखती है) और एक pt (वृत्त के केंद्रीय बिंदु) की जरूरत है। यदि इनमें से कोई भी नहीं मिल रहा है, तो यह दिखाए गए त्रुटि को फेंक देगा।

या तो URL

&pt=52.373,4.899&sfield=store&fl=_dist_:geodist() 

को इन दोनों को जोड़ने या जोड़ने के दो (या वास्तव में 3: pt, lat और lon): कि

&fl:_dist_:geodist(store,52.373,4.899) 

नोट में geodist() समारोह कॉल करने के लिए पहला मामला, यदि आपके पास आपकी क्वेरी में अतिरिक्त भू कार्य (जैसे geofilt) हैं, तो pt और sfield इसके लिए भी उपयोग किया जाता है (जब तक कि स्थानीय रूप से ओवर्रिड न हो den)