class CreateCollectionGraph: def __init__(self, args): self.con = DBConnection(args.uri, args.user, args.password) self.write_prepare() self.write_dict(args.dict) self.write_docs(args.docs) a = time.time() self.write_terms(args.terms) print(time.time() - a) def write_prepare(self): qs = [] qs.append("CREATE CONSTRAINT ON (t:Term) ASSERT t.termid IS UNIQUE") qs.append("CREATE CONSTRAINT ON (t:Term) ASSERT t.term IS UNIQUE") qs.append("CREATE CONSTRAINT ON (d:Doc) ASSERT d.docid IS UNIQUE") qs.append( "CREATE CONSTRAINT ON (d:Doc) ASSERT d.collectionid IS UNIQUE") for q in qs: self.con.write(q) def write_dict(self, dict_filename): query = """ USING PERIODIC COMMIT 10000 LOAD CSV FROM 'file:///{}' AS line FIELDTERMINATOR '|' CREATE (:Term {{ termid: toInteger(line[0]), term: line[1], df: toInteger(line[2]) }}) """.format(dict_filename) self.con.write(query) def write_docs(self, docs_filename): query = """ USING PERIODIC COMMIT 10000 LOAD CSV FROM 'file:///{}' AS line FIELDTERMINATOR '|' CREATE (:Doc {{ docid: toInteger(line[1]), collectionid: line[0], len: toInteger(line[2]) }}) """.format(docs_filename) self.con.write(query) def write_terms(self, terms_filename): query = """ USING PERIODIC COMMIT 10000 LOAD CSV FROM 'file:///{}' AS line FIELDTERMINATOR '|' MATCH (d:Doc),(t:Term) WHERE d.docid = toInteger(line[1]) AND t.termid = toInteger(line[0]) CREATE (t)-[a:appearsIn {{count: toInteger(line[2])}}]->(d) """.format(terms_filename) self.con.write(query)