2012-12-11 19 views
39

में लगता है कि ऐसा लगता है कि साइफर प्रश्नों में LIKE समर्थित नहीं है।CYPHER क्वेरी

क्या कोई अन्य निर्माण है जो एक ही कार्य करेगा?

उदाहरण के लिए:

start n = node(*) where n.Name LIKE('%SUBSTRING%') return n.Name, n; 
+1

refcard बुकमार्क करने के लिए एक बहुत आसान बात है: http://neo4j.com/docs/cypher-refcard/current/ यह सब समर्थित सूची में शामिल उदाहरण के लिए ऑपरेटरों मिलान स्ट्रिंग। –

उत्तर

49

नियमित अभिव्यक्ति का उपयोग करते हुए: http://neo4j.com/docs/developer-manual/current/#query-where-regex

start n = node(*) where n.Name =~ '.*SUBSTRING.*' return n.Name, n; 
+3

मुझे चिंता थी कि रेगेक्स का जवाब हो सकता है। ग्रोन;) फिर भी, यह – johnc

+2

हाँ की तुलना में इसे अधिक शक्तिशाली बनाता है, मैं regexp के बारे में भी चिंता करता हूं लेकिन यह अब सीधा तरीका है। लेकिन आप अभी भी इस तरह एक ल्यूसीन इंडेक्स का उपयोग कर सकते हैं: 'n = node शुरू करें: your_index (' property: * SUBSTRING * ') n.name, n; ' – ulkas

+4

वापस करें और कृपया शाब्दिक मानों के बजाय पैरामीटर का उपयोग करें:' n = node शुरू करें (*) जहां n.Name = ~ {like} वापसी n.Name, n; 'params: {" like ":"। * सब्सक्राइबिंग। * "}, नोड (*) भी शुरू होता है क्योंकि क्लॉज एक गैर ग्राफ पर संकेत देता है उपयोग-मामले, फिर उल्का 'इंडेक्स लुकअप सुझाव –

16

संस्करण 2.0 के रूप में, वरीय वाक्य रचना MATCH उपयोग करता है।

उदा।

MATCH (n) where n.Name =~ '.*SUBSTRING.*' return n.Name, n; 
+0

लेकिन '= ~ 'PRJ \ d'' – ekkis

+0

काम नहीं करता प्रतीत होता है। '= ~ ​​'पीआरजे \\ डी' ठीक काम करता है। whacks – ekkis

13

आप इसे केस संवेदी

MATCH (n) WHERE n.name =~ '(?i).*SUBSTRING.*' RETURN n; 
+0

हाँ से बचने की जरूरत है लेकिन प्रदर्शन बेकार है! – ekkis

+0

बहुत बहुत धन्यवाद :) – JochemQuery

5

नहीं regexps की जरूरत बनाना चाहते हैं:

the cypher refcard को
start n = node(*) where n.Name contains "substring" return n.Name, n; 

जाओ और विधेय अनुभाग तक स्क्रॉल करें। आपको यह और अन्य उपयोगी सामान मिलेंगे।

केस-असंवेदनशील चाहते हैं? लोअर केस में परिवर्तित करें:

start n = node(*) where lower(n.Name) contains lower("substring") return n.Name, n; 
+0

दुख की बात है, यह मामला संवेदनशील है और कोई मामला असंवेदनशील संस्करण नहीं है। ओह! – ekkis

+0

@ekkis तय, संपादित देखें। –

+0

हां, यह काम करेगा, जैसा कि '= ~' (? I) substring 'होगा लेकिन यह अच्छा प्रदर्शन नहीं करता है। निचला() इंडेक्स उपयोग को रोकता है ताकि बड़े डेटा पर यह लटकाएगा। मेरे पास यहां एक खुला सुविधा अनुरोध है: https://github.com/neo4j/neo4j/issues/9450 – ekkis