2012-11-18 22 views
24

क्या neo4j पर केस-असंवेदनशील साइफर क्वेरी चलाने के लिए संभव है?केस-असंवेदनशील साइफर क्वेरी चलाना

कि प्रयास करें: http://console.neo4j.org/

जब मैं इस में टाइप करें:

start n=node(*) 
match n-[]->m 
where (m.name="Neo") 
return m 

यह एक पंक्ति देता है। लेकिन जब मैं इसमें टाइप करता हूं:

start n=node(*) 
match n-[]->m 
where (m.name="neo") 
return m 

यह कुछ भी वापस नहीं करता है; क्योंकि नाम "नियो" के रूप में सहेजा गया है। केस-असंवेदनशील प्रश्नों को चलाने का कोई आसान तरीका है?

उत्तर

34

हाँ, केस संवेदी नियमित अभिव्यक्ति का उपयोग करके:

WHERE m.name =~ '(?i)neo' 

http://neo4j.com/docs/developer-manual/current/cypher/clauses/where/#where-case-insensitive-regular-expressions

+2

लिंक अब मर चुका है। इसे [http://neo4j.com/docs/developer-manual/current/#query- सामान्य] (http://neo4j.com/docs/developer-manual/current/#query- सामान्य) में स्थानांतरित किया गया है। यद्यपि आपके उत्तर में समाधान शामिल है, लेकिन किसी के लिए लिंक अपडेट करना बेहतर होगा, उस पर क्लिक करना समाप्त हो सकता है। – Gandalf

+0

= ~ ऑपरेटर इंडेक्स – Abhi

+1

का उपयोग नहीं करता है, मैं यहां पैरामीटर कैसे पास कर सकता हूं? ''(? i) $ param'' और'' (?!) '+ $ param' काम नहीं करता – vladkras

7

एक और तरीका होगा:

WHERE LOWER(m.Name) = LOWER("Neo") 

और तुम Neo4j क्लाइंट (नेट) का उपयोग कर रहे हैं:

Client.Cypher.Match("(m:Entity)") 
    .Where("LOWER(m.Name) = LOWER({name})") 
    .WithParam("name", inputName) 
    .Return(m => m.As<Entity>()) 
    .Results 
    .FirstOrDefault(); 
+0

पैरामीटर के लिए यह समाधान लागू करना आसान है – thangdc94

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