2012-11-29 5 views
5

के साथ neo4j में इंडेक्स का उपयोग करके "आईएन" खंड के साथ पूछताछ मैं neo4j में अपने auto_index का उपयोग करना चाहता हूं और इसके खिलाफ मिलान करने के लिए तारों की एक सरणी में पास करना चाहता हूं। मुझे पता है कि आप अपने साइफर क्वेरी के अंत में एक आईएन क्लॉज जोड़ सकते हैं लेकिन यह इंडेक्स का उपयोग नहीं करता है और मुझे लगता है कि सभी रिकॉर्ड्स का डेटाबेस स्कैन करेगा। इंडेक्स क्वेरी के साथ ऐसा करने का सबसे अच्छा तरीका क्या है?साइफर

उदा। मुझे उन उपयोगकर्ताओं को प्राप्त करें जिनके फेसबुक आईडी [123 "," 456 "," 78 9 "में हैं] मानते हैं कि facebookId पर एक auto_index है और 1 मिलियन उपयोगकर्ता नोड्स हैं।

उत्तर

11

मुझे लगता है यह एक जवाब के रूप में पोस्ट के लायक है:

START n=node:node_auto_index('facebookId:("123", "456", "789")') 
... 

उदाहरण: http://console.neo4j.org/r/3mcvr5

+0

धन्यवाद के बिना एक ही परिणाम प्रदान करता है, यह चाल है। – MonkeyBonkey

+0

रिकॉर्ड के लिए, मौजूदा नियो 1.9.एम04 के साथ 512 फ़ील्ड तक सीमित है। (जो मुझे लगता है कि लुसीन 3.5 का उपयोग करता है) –

+0

धन्यवाद, इससे मेरी मदद मिली – jarandaf

1

आप की तरह

start user = node:node_auto_index('facebookId:123 OR facebookId:456') match ... 

एक उदाहरण के लिए http://console.neo4j.org/r/nj98lt एक स्पष्ट सूचकांक देखने होने से इस क्वेरी करते हैं, करेंगे।

+0

मुझे लगता है कि काम करेंगे, लेकिन यह बहुत लंबे समय तक अगर मैं 20 या 30 आईडी से मेल खाना आवश्यक हो सकती है विरुद्ध। ऐसा करने का कोई और क्लीनर तरीका नहीं है? – MonkeyBonkey

+0

बीटीडब्ल्यू साइफर में इंडेक्स क्वेरी में कौन से ऑपरेटरों और पैरामीटर को पारित किया जा सकता है, इस पर प्रलेखन कहां है? – MonkeyBonkey

+1

अधिकांश चीजें यहाँ हैं। यह डिफ़ॉल्ट सूचकांक के लिए सीधे लुसीन को पास किया जाता है: http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Overview –