Module: Neo4j::NodeMixin

Overview

Examples:

Declare and Use a Lucene Index


class Contact
   include Neo4j::NodeMixin
   property :phone, :index => :exact
end

# Find an contact with a phone number
Contact.find('phone: 12345').first #=> a phone object !

Class Method Summary collapse

Methods included from Wrapper::Rule::InstanceMethods

#trigger_rules

Methods included from Wrapper::HasN::InstanceMethods

#_decl_rels_for

Methods included from Wrapper::NodeMixin::Initialize

#_java_node, #init_on_create, #init_on_load, #wrapper

Methods included from Wrapper::NodeMixin::Delegates

#:==, #:[], #:[]=, #_node, #_nodes, #_rel, #_rels, #both, #del, #eql?, #equal?, #eval_paths, #exist?, #expand, #getId, #get_property, #incoming, #neo_id, #node, #nodes, #outgoing, #property?, #property_keys, #props, #rel, #rel?, #rels, #remove_property, #set_property, #unique, #update

Class Method Details

.included(klass) ⇒ Object



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
# File 'lib/neo4j/node_mixin.rb', line 35

def self.included(klass)
  klass.extend Neo4j::Wrapper::ClassMethods
  klass.extend Neo4j::Wrapper::NodeMixin::ClassMethods
  klass.extend Neo4j::Wrapper::Property::ClassMethods
  klass.extend Neo4j::Wrapper::HasN::ClassMethods
  klass.extend Neo4j::Core::Index::ClassMethods
  klass.extend Neo4j::Wrapper::Find
  klass.extend Neo4j::Wrapper::Rule::ClassMethods

  klass.send(:include, Neo4j::Wrapper::Rule::Functions)


  klass.node_indexer do
    index_names :exact => "#{klass._index_name}_exact", :fulltext => "#{klass._index_name}_fulltext"
    trigger_on :_classname => klass.to_s
    prefix_index_name &klass.method(:index_prefix)
  end

  def klass.inherited(sub_klass)
    return super if sub_klass.to_s == self.to_s
    base_class = self

    # make the base class trigger on the sub class nodes
    base_class._indexer.config.trigger_on :_classname => sub_klass.to_s

    sub_klass.inherit_rules_from self

    sub_klass.node_indexer do
      inherit_from base_class
      index_names :exact => "#{sub_klass._index_name}_exact", :fulltext => "#{sub_klass._index_name}_fulltext"
      trigger_on :_classname => sub_klass.to_s
      prefix_index_name &sub_klass.method(:index_prefix)
    end
    super
  end
  super
end