<< ConditionIndex | Index | TransparentHashAccess >>
Requirements: all Indices are tested with postgresql only. For postgresql, you need to:
psql -U postgres test < $POSTGRESQL/contrib/tsearch2.sql
cat <<EOS | psql -U postgres test grant all on pg_ts_cfg to test; grant all on pg_ts_cfgmap to test; grant all on pg_ts_dict to test; grant all on pg_ts_parser to test;
The Example-Code:
#!/usr/bin/env ruby
require 'odba'
require 'odba/index_definition'
class User
attr_accessor :first_name, :last_name, :vita
include ODBA::Persistable
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def to_s
"#@first_name #@last_name"
end
end
index_def = YAML.load <<-EOD
--- !ruby/object:ODBA::IndexDefinition
index_name: 'users'
origin_klass: 'User'
target_klass: 'User'
resolve_search_term: vita
resolve_target: ''
resolve_origin: ''
fulltext: true
dictionary: default
EOD
ODBA.storage.dbi = DBI.connect('DBI:pg:test', 'test', '')
ODBA.cache.setup
begin
ODBA.cache.drop_index('users')
rescue
end
ODBA.cache.create_index(index_def, Object)
father = User.new('Johann Sebastian', 'Bach')
father.vita = <<-EOS # from: http://en.wikipedia.org/wiki/Bach
At the age of 14, Sebastian was awarded a choral scholarship, with his older
school friend, Georg Erdmann, to study at the prestigious St Michael's
School in Lüneburg, not far from Hamburg, the largest city in Germany. This
involved a long journey with his friend, probably partly on foot and partly by
coach. His two years there appear to have been critical in exposing him to a
wider palette of European culture than he would have experienced in Thuringia.
In addition to singing a cappella in the choir, it is likely that he played
the School's three-manual organ and harpsichords. He probably learned French
and Italian, and received a thorough grounding in theology, Latin, history,
geography and physics. He would have come into contact with sons of noblemen
from northern Germany sent to the highly selective school to prepare for
careers in diplomacy, government and the military. It is likely that he had
significant contact with organists in Lüneburg, in particular Georg Böhm, and
visited several of those in Hamburg, such as Reincken and Bruhns. Through
these musicians, he probably gained access to the largest instruments he had
played. It is also likely that he became acquainted with the music of the
North German tradition, especially the work of Dieterich Buxtehude, with music
manuscripts from further afield, and with treatises on music theory that were
in the possession of these men.
EOS
father.odba_store
son = User.new('Carl Philipp Emanuel', 'Bach')
son.vita = <<-EOS # from: http://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach
In 1768 Bach succeeded Georg Philipp Telemann as Capellmeister at Hamburg, and
in consequence of his new office began to turn his attention more towards
church music. Next year he produced his oratorio Die Israeliten in der Wüste,
a composition remarkable not only for its great beauty but for the resemblance
of its plan to that of Felix Mendelssohn's Elijah, and between 1769 and 1788
added over twenty settings of the Passion, and some seventy cantatas,
litanies, motets, and other liturgical pieces. At the same time, his genius
for instrumental composition was further stimulated by the career of Joseph
Haydn. He died in Hamburg on December 14, 1788.
EOS
son.odba_store
puts ODBA.cache.retrieve_from_index('users', 'telemann')
# -> Carl Philipp Emanuel Bach
puts ODBA.cache.retrieve_from_index('users', 'buxtehude')
# -> Johann Sebastian Bach
puts ODBA.cache.retrieve_from_index('users', 'haydn')
# -> Carl Philipp Emanuel Bach
puts ODBA.cache.retrieve_from_index('users', 'lüneburg')
# -> Johann Sebastian Bach