-
Notifications
You must be signed in to change notification settings - Fork 276
/
find.rb
84 lines (70 loc) · 2.27 KB
/
find.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
require 'movie'
require 'logger'
Neo4j.config[:logger_level] = Logger::ERROR
def find_actor(query_or_id)
id = query_or_id.to_i
lucene_query = id == 0 && query_or_id
if lucene_query
result = Actor.find(lucene_query)
puts "Found #{result.size} actors"
result.each { |x| puts x }
else
actor = Neo4j::Node.load(id)
puts "No Actor found with id #{id}" if actor.nil?
puts "Loaded node not an actor, it is an #{actor.class}" unless actor.class == Actor
return if actor.nil? || actor.class != Actor
puts actor
puts " Acted in #{actor.acted_in_rels.to_a.size} movies"
actor.acted_in_rels.each do |rel|
puts " #{rel} #{rel.end_node}"
end
end
end
def find_movies(query_or_id)
id = query_or_id.to_i
lucene_query = id == 0 && query_or_id
if lucene_query
result = Movie.find(lucene_query)
puts "Found #{result.size} Movies"
result.each { |x| puts x }
else
movie = Neo4j::Node.load(id)
puts "No movier found with id #{id}" if movie.nil?
puts "Loaded node not an actor, it is an #{movie.class}" unless movie.class == Movie
return if movie.nil? || movie.class != Movie
puts movie
puts "has #{movie.actors.to_a.size} actors"
movie.actors.each { |a| puts a}
end
end
def find_roles(query_or_id)
id = query_or_id.to_i
lucene_query = id == 0 && query_or_id
if lucene_query
result = Role.find(lucene_query)
puts "Found #{result.size} Roles"
result.each { |x| puts "#{x} #{x.start_node} #{x.end_node}" }
else
role = Neo4j::Relationship.load(id)
puts "No role found with id #{id}" if role.nil?
puts "Loaded node not an Role, it is an #{role.class}" unless role.class == Role
return if role.nil? || role.class != Role
puts "Found #{role} #{role.start_node} #{role.end_node}"
end
end
if (ARGV.size == 1)
find_actor(ARGV[0])
elsif ARGV.size == 2 && ARGV[0] == "-m"
find_movies(ARGV[1])
elsif ARGV.size == 2 && ARGV[0] == "-r"
find_roles(ARGV[1])
else
puts <<HERE
Usage: jruby find.rb [-m|-r] <actor name|actor neo_id>
-m \tfinds the movies for the given a lucene query or an id
-r \tsame as -m but finds roles
Example, find all actors name Willis*: jruby find.rb "name: Willis*"
Neo4j.rb version: #{Neo4j::VERSION}
HERE
end
Neo4j.shutdown