मैं वर्तमान में अपने प्रश्नों के लिए स्थानिक का उपयोग कर रहा हूं:
START b=node:LocationIndex("withinDistance:[70.67,12.998,6.0]")
RETURN b
ORDER BY b.score
B एक इकाई है जिसका एक अंक है और मुझे "पसंद है"इस स्कोर के अनुसार, लेकिन मुझे एक ऐसा मामला मिला, जिसमें स्कोर 0 के साथ सभी संस्थाओं को दूरी का आदेश नहीं दिया गया था। मुझे पता है कि स्थानिक स्वचालित रूप से दूरी द्वारा आदेश देता है, लेकिन एक बार जब मैं किसी अन्य क्षेत्र द्वारा आदेश को बाध्य करता हूं, तो मैं इस आदेश को खो देता हूं।
क्या इस आदेश को दूसरे आदेश क्षेत्र के रूप में मजबूर करने का कोई तरीका है:
START b=node:LocationIndex("withinDistance:[70.67,12.998,6.0]")
RETURN b
ORDER BY b.score, ?distance?
उत्तर:
जवाब के लिए 2 № 1दुर्भाग्य से वर्तमान स्थानिक प्लगइन में, कोई साइबर सपोर्ट नहीं है, इसलिए ORDER BY द्वारा डिस्टेंस फंक्शन (या डिस्टेंस रिजल्ट) को एक्सेस नहीं किया जा सकता।
जैसा कि आपने पहले ही देखा था, भीतर की ओरसूचकांक में कार्य करने से दूरी द्वारा आदेशित परिणाम वापस आ जाएंगे। यदि आप साइबर क्वेरी में अतिरिक्त ORDER BY नहीं जोड़ते हैं, तो दूरी क्रम बनाए रखा जाना चाहिए। हालाँकि, अतिरिक्त आदेश BY जोड़ते समय, मूल आदेश खो जाता है। यह साइबर डेवलपर्स के लिए एक दिलचस्प सुविधा का अनुरोध होगा कि वे उन तत्वों के लिए मूल आदेश बनाए रखें जो तुलनात्मक रूप से ORDER BY में समान हैं।
स्थानिक विकसित करने के लिए एक अलग योजना भी हैसाइबरफेयर के भीतर ही कार्य करता है, और यह समस्या को आपके इच्छित तरीके से हल करेगा। लेकिन अभी तक इसके लिए कोई विकास या रिलीज शेड्यूल की कोई जानकारी नहीं है।
एक अतिरिक्त विकल्प जो आपकी मदद कर सकता हैकम समय सीमा और स्वयं neo4j विकास योजनाओं से स्वतंत्र है, स्थानिक सूचकांक क्वेरी के विस्तार से एक आदेश जोड़ना है। अभी आप इंडेक्स क्वेरी को "इनडिस्टेंस: [70.67,12.998,6.0]" के रूप में निर्दिष्ट कर रहे हैं, लेकिन आप इस क्वेरी को अतिरिक्त पैरामीटर पास करने के लिए स्पैटियल प्लगइन कोड को संपादित कर सकते हैं, और वे पैरामीटर के लिए एक ऑर्डर हो सकते हैं। तब आपके पास आदेश का पूरा नियंत्रण होता।