2012-10-13 17 views
23

मैं एक नया नियो 4 जे डेटाबेस बना रहा हूं। मेरे पास उपयोगकर्ता नामक एक प्रकार का नोड है और मैं उपयोगकर्ता पहचानकर्ता और ईमेल एड्रेस के गुणों पर एक सूचकांक चाहता हूं। जब डेटाबेस नया होता है तो कोई इंडेक्स सेट अप कैसे करता है? मैंने neo4j.properties फ़ाइल में देखा है, वहां इंडेक्स बनाने के लिए समर्थन दिखता है। लेकिन जब मैं बहुतनियो 4j: स्वचालित सूचकांक बनाने के लिए चरणबद्ध चरण

# Autoindexing 

# Enable auto-indexing for nodes, default is false 
node_auto_indexing=true 

# The node property keys to be auto-indexed, if enabled 
node_keys_indexable=EmailAddress,Identifier 

के रूप में इन सेट और एक नोड जोड़ सकते हैं और एक प्रश्न करना एक पहचानकर्ता मुझे पता है कि मौजूद है

START n=node:Identifier(Identifier = "USER0") 
RETURN n; 

तो मैं एक

MissingIndexException: Index `Identifier` does not exist 

कैसे कर पाने को खोजने के लिए मैं एक अनुक्रमणिका बनाते हैं और इसे प्रारंभिक क्वेरी में उपयोग करते हैं? मैं केवल इसे प्राप्त करने के लिए कॉन्फ़िगरेशन फ़ाइलों और साइफर का उपयोग करना चाहता हूं। यानी वर्तमान समय में मैं केवल पावर टूल कंसोल में खेल रहा हूं।

+0

नीचे बौगल का जवाब देखने के लिए सुनिश्चित करें - कैसे अनुक्रमित 2.0+ में काम काफी आसान है - और जैसा कि आप कहते हैं कि यह एक नया डेटाबेस है, इसलिए उम्मीद है कि नवीनतम neo4j संस्करण में जाना एक विकल्प है ... –

उत्तर

51

neo4j.properties पर निम्नलिखित को जोड़ फाइल

# Autoindexing 

# Enable auto-indexing for nodes, default is false 
node_auto_indexing=true 

# The node property keys to be auto-indexed, if enabled 
node_keys_indexable=EmailAddress,Identifier 

नोड्स के लिए स्वत: सूचकांक बनाएं

neo4j-sh (0)$ index --create node_auto_index -t Node 

चेक यदि वे मौजूद

neo4j-sh (0)$ index --indexes 

लौट चाहिए

Node indexes: 
node_auto_index 

जब नोड ऑटो अनुक्रमित node_auto_index

यह जानकारी this page

के तल पर एक टिप्पणी से आया सूचकांक का नाम है के रूप में सूचकांक

start a = node:node_auto_index(Identifier="USER0") 
return a; 

निर्दिष्ट करने के लिए निम्न सिंटैक्स का उपयोग क्वेरी करने

अद्यतन

मामले में आप स्वतंत्र करना चाहते हैं एक्स अपने मौजूदा डेटा जो वहाँ था पहले स्वत: अनुक्रमण चालू किया गया था

START nd =node(*) 
WHERE has(nd.Property_Name) 
WITH nd 
SET nd.Property_Name = nd.Property_Name 
RETURN count(nd); 
+0

[विंडोज़ पर neo4j-sh कैसे शुरू करें] (http: // stackoverflow। कॉम/ए/1 9 275558/1174169) – cod3monk3y

+2

http: // localhost: 7474/webadmin का उपयोग करें। पेज लोड के बाद कंसोल टैब का चयन करें। आप वहां शेल कमांड निष्पादित कर सकते हैं। – MSRS

+1

यह उत्तर वास्तव में पुराना है और मुझे यकीन नहीं है कि यह अभी भी ऐसा करने का सबसे अच्छा तरीका है। इस पर कुछ स्पष्टीकरण अच्छा होगा। –

8

Neo4j 2.0 में, आप लेबल और नए बाधाओं के बजाय

CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE 
    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE 

का उपयोग करना चाहिए (जहां PROPERTY_NAME अपने सूचकांक का नाम है)

CREATE INDEX ON :User(EmailAddress) 
8

इंडेक्स मुख्य रूप से संपत्ति पर किए गए जो जहां हालत के लिए प्रयोग किया जाता है: ईमेल उपयोगकर्ता प्रति अद्वितीय नहीं है, तो बस के बजाय एक सादे सूचकांक पैदा करते हैं। नियो 4 जे 2.0 में, इंडेक्स अब बनाना आसान है।

लेबल पर

CREATE INDEX ON :Person(name) 

ड्रॉप सूचकांक एक लेबल पर सूचकांक बनाएं

DROP INDEX ON :Person(name) 

विशिष्टता बाधा बनाएं

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE 

ड्रॉप विशिष्टता बाधा

DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE 

, सभी अनुक्रमित और neo4j-ब्राउज़र में कमी लिस्टिंग आदेश के बाद के लिए उपयोगी

:schema 

सूची सूचकांक और साथ विशिष्ट लेबल के लिए की कमी है:

:schema ls -l :YourLabel 
संबंधित मुद्दे