From 8f5749355a92d10d8d30aa8d66eddc3e5f629b27 Mon Sep 17 00:00:00 2001 From: Israel Barreto Sant'Anna <ibsa14@inf.ufpr.br> Date: Thu, 1 Oct 2015 09:52:02 -0300 Subject: [PATCH] Changed add_index method to accept multiple properties Signed-off-by: Israel Barreto Sant'Anna <ibsa14@inf.ufpr.br> --- .../orient_db/learning_object_repository.rb | 2 +- lib/orient_db/migration.rb | 22 +++++++++++++++---- lib/orient_db/migrations/create_attribute.rb | 4 ++-- .../migrations/create_learning_object.rb | 4 +++- lib/orient_db/migrations/create_user.rb | 2 +- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index 51e747d9..96d2cb63 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -77,7 +77,7 @@ module OrientDb SELECT EXPAND(rid) FROM index:learningobject_search WHERE key LUCENE '#{qry}' - ", limit: -1 + ", limit: 10000 build_objects(learning_objects_hash) || [] end diff --git a/lib/orient_db/migration.rb b/lib/orient_db/migration.rb index 0d282d31..466003fa 100644 --- a/lib/orient_db/migration.rb +++ b/lib/orient_db/migration.rb @@ -35,19 +35,33 @@ module OrientDb end end - def add_index(klass, property, type, engine=nil, metadata=nil) + def add_index(klass, properties, type, name=nil, engine=nil, metadata=nil) engine = engine.nil? ? "" : " ENGINE #{engine}" metadata = metadata.nil? ? "" : " METADATA #{metadata.to_s}" + props = stringify(properties,", ") + name = name.nil? ? "#{klass}."+stringify(properties,"_") : name; + begin - @client.command "CREATE INDEX #{klass}.#{property} ON #{klass} (#{property}) #{type}#{engine}#{metadata}" + index = "CREATE INDEX #{name} ON #{klass} (#{props}) #{type}#{engine}#{metadata}" + @client.command index rescue Orientdb4r::ServerError => e # If the index already exists OrientDB will give an error containing this message - unless e.message.include? "Index with name #{klass.downcase}.#{property.downcase}" + unless e.message.include? "Index with name #{name.downcase}" puts "Error at index creation" p e.message - p.backtrace + p e.backtrace end end end + + private + def stringify(array, separator) + str = "" + array.each do |value| + str += value.to_s+separator + end + str[0..-(separator.size+1)] + end + end end \ No newline at end of file diff --git a/lib/orient_db/migrations/create_attribute.rb b/lib/orient_db/migrations/create_attribute.rb index db0de647..b297b684 100644 --- a/lib/orient_db/migrations/create_attribute.rb +++ b/lib/orient_db/migrations/create_attribute.rb @@ -5,9 +5,9 @@ class OrientDb::Migrations::CreateAttribute < OrientDb::Migration c.property 'key', :string c.property 'value', :string end - add_index 'Attribute', 'key', "NOTUNIQUE_HASH_INDEX" + add_index 'Attribute', ['key'], "NOTUNIQUE_HASH_INDEX" metadata = {:analyzer => "org.apache.lucene.analysis.br.BrazilianAnalyzer"} - add_index 'Attribute', 'value', "FULLTEXT", "LUCENE", metadata.to_json + add_index 'Attribute', ['value'], "FULLTEXT", nil, "LUCENE", metadata.to_json end def down diff --git a/lib/orient_db/migrations/create_learning_object.rb b/lib/orient_db/migrations/create_learning_object.rb index 194fedb4..7d3a15a6 100644 --- a/lib/orient_db/migrations/create_learning_object.rb +++ b/lib/orient_db/migrations/create_learning_object.rb @@ -8,7 +8,9 @@ class OrientDb::Migrations::CreateLearningObject < OrientDb::Migration c.property 'type', :string c.property 'metadata', :string end - add_index 'LearningObject', 'id_dspace', :type => "UNIQUE_HASH_INDEX" + add_index 'LearningObject', ['id_dspace'], "UNIQUE_HASH_INDEX" + metadata = {:analyzer => "org.apache.lucene.analysis.br.BrazilianAnalyzer"} + add_index 'LearningObject', ['name', 'description'], "FULLTEXT", "learningobject_search", "LUCENE", metadata.to_json end def down diff --git a/lib/orient_db/migrations/create_user.rb b/lib/orient_db/migrations/create_user.rb index 887c6be7..3c7406f4 100644 --- a/lib/orient_db/migrations/create_user.rb +++ b/lib/orient_db/migrations/create_user.rb @@ -4,7 +4,7 @@ class OrientDb::Migrations::CreateUser < OrientDb::Migration create_class 'User', 'V' do |c| c.property 'p_id', :integer, :mandatory => true, :notnull => true end - add_index 'User', 'p_id', "UNIQUE_HASH_INDEX" + add_index 'User', ['p_id'], "UNIQUE_HASH_INDEX" end def down -- GitLab