2012-09-21 7 views
5

में मैं एक तीसरी पार्टी के सांकेतिक शब्दों में बदलनेवाला भुगतान किया Solr के लिए एक स्कीमा विकसित करने के लिए, लेकिन अब है कि मैं एक अपने आप को समझने का अधिक है मैं एक प्रश्न पूछना चाहते हैं।संग्रहीत निर्देशांक का सही तरीका Solr

<field name="latlng" type="location" indexed="true" stored="false" /> 
<field name="latlng_0_coordinate" type="double" indexed="true" stored="false" /> 
<field name="latlng_1_coordinate" type="double" indexed="true" stored="false" /> 

मेरी साइट JSON के माध्यम से प्रस्तुत करने के लिए lat_lng_0_coordinate और latlng_1_coordinate लेकिन कुछ भी latlng पर सबमिट किया जाता:

उद्देश्य तो मेरे स्कीमा में मैं इस राशि spacial खोज करना है।

इसके अलावा, वहाँ है, मेरे Schema.xml में "LatLng" का कोई अन्य उल्लेख है इसलिए इसकी पसंद नहीं वहाँ जहाँ तक मैं देख सकता हूँ में एक गठबंधन या में शामिल होने के समारोह नहीं है।

तो, मेरे सवाल है, LatLng एक उद्देश्य है करता है या सांकेतिक शब्दों में बदलनेवाला त्रुटि में यह में डाल दिया गया है?

उत्तर

5

latlng फ़ील्ड प्रकार स्थान के रूप में परिभाषित किया गया है। स्थान फ़ील्ड की परिभाषा निम्नानुसार है।

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

इसे _coordinate प्रत्यय के साथ गतिशील फ़ील्ड बनाने की आवश्यकता है।

आपके उदाहरण में, अक्षांश क्षेत्र के लिए latlng_0_coordinate का उपयोग अक्षांश क्षेत्र और latlng_1_coordinate के लिए किया जाना चाहिए।

तो स्थानिक प्रश्नों का उपयोग करके आप LatLng फ़ील्ड का उपयोग कर सकते हैं।

उदाहरण के लिए

, आदेश भी बिंदु आप निम्न क्वेरी का उपयोग कर सकते हैं के साथ 5 किमी के भीतर निकटतम स्थानों खोजने के लिए। 41.431, 28.431 सिर्फ यादृच्छिक स्थान हैं जिन्हें मैंने लिखा था।

{!geofilt sfield=latlng}&pt=41.431,28.431&d=5 

नतीजतन, यह कोई त्रुटि नहीं है, यह उद्देश्य के लिए है।

Solr डॉक्स में यह भी देखें: https://wiki.apache.org/solr/SpatialSearch#QuickStart

+0

शानदार, धन्यवाद –

+0

@ कृपया, जहां यह उल्लेख किया गया है घ में है कि पैरामीटर मान किमी में होगा ?? मैंने इसे कुछ स्थानों पर पढ़ा है कि यह मील में है। – NamingException

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