Database Reference
In-Depth Information
Seien Sie gewarnt, die Daten enthalten sehr viele Informationen zu Spielfil-
men, von Blockbustern über ausländische Filme bis hin zu, nun ja, Unterhal-
tung für Erwachsene. Die Ruby-Gems json und faraday müssen installiert
sein, um das Skript auszuführen.
neo4j/importer.rb
REST _ URL = 'http://localhost:7474/'
HEADER = { 'Content-Type' => 'application/json' }
%w{rubygems json cgi faraday}.each{|r| require r}
# Verbindung mit dem Neo4j REST-Server herstellen
conn = Faraday.new(:url => REST _ URL) do |builder|
builder.adapter :net _ http
end
# Existierenden Knoten über den Index abrufen oder neuen anlegen
def get _ or _ create _ node(conn, index, value)
# Knoten im Index nachschlagen
r = conn.get( "/db/data/index/node/ #{index} /name/ #{CGI.escape(value)} " )
node = (JSON.parse(r.body).first || {})[ 'self' ] if r.status == 200
unless node
# Indexierten Knoten nicht gefunden, also neuen anlegen
r = conn.post( "/db/data/node" , JSON.unparse({ "name" => value}), HEADER)
node = (JSON.parse(r.body) || {})[ 'self' ] if [200, 201].include? r.status
# Neuen Knoten in den Index einfügen
node _ data = "{ \" uri \" : \"#{node}\" , \" key \" : \" name \" ,
\" value \" : \"#{CGI.escape(value)}\" }"
conn.post( "/db/data/index/node/ #{index} " , node _ data, HEADER)
end
node
end
puts "begin processing..."
count = 0
File.open(ARGV[0]).each do |line|
_ , _ , actor, movie = line.split( " \t " )
next if actor.empty? || movie.empty?
# Schauspieler- (actor) und Film-Knoten (movie) anlegen
actor _ node = get _ or _ create _ node(conn, 'actors' , actor)
movie _ node = get _ or _ create _ node(conn, 'movies' , movie)
# Beziehung zwischen Schauspieler und Film herstellen
conn.post( " #{actor _ node} /relationships" ,
JSON.unparse({ :to => movie _ node, :type => 'ACTED _ IN' }), HEADER)
puts " #{count} relationships loaded" if (count += 1) % 100 == 0
end
puts "done!"
Sobald alles vorbereitet ist, führen Sie das Skript aus und übergeben den
Pfad an die heruntergeladene performance.tsv -Datei.
 
Search WWH ::




Custom Search