Class: SiSU_DbIndex::Index

Inherits:
Object
  • Object
show all
Defined in:
lib/sisu/db_indexes.rb

Overview

create documents Indexes def initialize(opt,conn=”,sql_type)

Direct Known Subclasses

SiSU_DbDBI::Index

Instance Method Summary collapse

Constructor Details

#initialize(opt, conn, file, sql_type) ⇒ Index

Returns a new instance of Index.



57
58
59
# File 'lib/sisu/db_indexes.rb', line 57

def initialize(opt,conn,file,sql_type)
  @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
end

Instance Method Details

#baseObject



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/sisu/db_indexes.rb', line 96

def base
  if (@opt.act[:verbose_plus][:set]==:on \
  || @opt.act[:maintenance][:set]==:on)
    print "\n          create documents common indexes\n"
  end
  sql_arr=[
    %{CREATE INDEX idx_ocn ON doc_objects(ocn);},
    %{CREATE INDEX idx_digest_clean ON doc_objects(digest_clean);},
    %{CREATE INDEX idx_digest_all ON doc_objects(digest_all);},
    %{CREATE INDEX idx_lev0 ON doc_objects(lev0);},
    %{CREATE INDEX idx_lev1 ON doc_objects(lev1);},
    %{CREATE INDEX idx_lev2 ON doc_objects(lev2);},
    %{CREATE INDEX idx_lev3 ON doc_objects(lev3);},
    %{CREATE INDEX idx_lev4 ON doc_objects(lev4);},
    %{CREATE INDEX idx_lev5 ON doc_objects(lev5);},
    %{CREATE INDEX idx_lev6 ON doc_objects(lev6);},
    %{CREATE INDEX idx_endnote_nr ON endnotes(nr);},
    %{CREATE INDEX idx_digest_en ON endnotes(digest_clean);},
    %{CREATE INDEX idx_endnote_nr_asterisk ON endnotes_asterisk(nr);},
    %{CREATE INDEX idx_endnote_asterisk ON endnotes_asterisk(clean);},
    %{CREATE INDEX idx_digest_en_asterisk ON endnotes_asterisk(digest_clean);},
    %{CREATE INDEX idx_endnote_nr_plus ON endnotes_plus(nr);},
    %{CREATE INDEX idx_endnote_plus ON endnotes_plus(clean);},
    %{CREATE INDEX idx_digest_en_plus ON endnotes_plus(digest_clean);},
    %{CREATE INDEX idx_title ON metadata_and_text(title);},
    %{CREATE INDEX idx_author ON metadata_and_text(creator_author);},
    %{CREATE INDEX idx_filename ON metadata_and_text(src_filename);},
    %{CREATE INDEX idx_language ON metadata_and_text(language_document_char);},
    %{CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register)},
  ]
  conn_execute_array(sql_arr)
end

#conn_execute_array(sql_arr) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/sisu/db_indexes.rb', line 75

def conn_execute_array(sql_arr)
  begin
    @conn.transaction do |conn|
      sql_arr.each do |sql|
        conn_execute_sql(conn,sql)
      end
    end
  rescue
    if @conn.is_a?(NilClass)
      errmsg="No sqlite3 connection (check sqlite3 dependencies)"
      if @opt.act[:no_stop][:set]==:on
        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
          error("#{errmsg}, proceeding without sqlite output (as requested)")
      else
        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
          error("#{errmsg}, STOPPING")
        exit
      end
    end
  end
end

#conn_execute_sql(conn, sql) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/sisu/db_indexes.rb', line 67

def conn_execute_sql(conn,sql)
  if @sql_type==:pg
    conn_execute_sql_pg(conn,sql)
  elsif @sql_type==:sqlite
    conn_execute_sql_sqlite(conn,sql)
  else
  end
end

#conn_execute_sql_pg(conn, sql) ⇒ Object



61
62
63
# File 'lib/sisu/db_indexes.rb', line 61

def conn_execute_sql_pg(conn,sql)
  conn.exec_params(sql)
end

#conn_execute_sql_sqlite(conn, sql) ⇒ Object



64
65
66
# File 'lib/sisu/db_indexes.rb', line 64

def conn_execute_sql_sqlite(conn,sql)
  conn.execute(sql)
end

#create_indexesObject

check added from pg not tested



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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/sisu/db_indexes.rb', line 60

def create_indexes                                                           # check added from pg not tested
  def conn_execute_sql_pg(conn,sql)
    conn.exec_params(sql)
  end
  def conn_execute_sql_sqlite(conn,sql)
    conn.execute(sql)
  end
  def conn_execute_sql(conn,sql)
    if @sql_type==:pg
      conn_execute_sql_pg(conn,sql)
    elsif @sql_type==:sqlite
      conn_execute_sql_sqlite(conn,sql)
    else
    end
  end
  def conn_execute_array(sql_arr)
    begin
      @conn.transaction do |conn|
        sql_arr.each do |sql|
          conn_execute_sql(conn,sql)
        end
      end
    rescue
      if @conn.is_a?(NilClass)
        errmsg="No sqlite3 connection (check sqlite3 dependencies)"
        if @opt.act[:no_stop][:set]==:on
          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
            error("#{errmsg}, proceeding without sqlite output (as requested)")
        else
          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
            error("#{errmsg}, STOPPING")
          exit
        end
      end
    end
  end
  def base
    if (@opt.act[:verbose_plus][:set]==:on \
    || @opt.act[:maintenance][:set]==:on)
      print "\n          create documents common indexes\n"
    end
    sql_arr=[
      %{CREATE INDEX idx_ocn ON doc_objects(ocn);},
      %{CREATE INDEX idx_digest_clean ON doc_objects(digest_clean);},
      %{CREATE INDEX idx_digest_all ON doc_objects(digest_all);},
      %{CREATE INDEX idx_lev0 ON doc_objects(lev0);},
      %{CREATE INDEX idx_lev1 ON doc_objects(lev1);},
      %{CREATE INDEX idx_lev2 ON doc_objects(lev2);},
      %{CREATE INDEX idx_lev3 ON doc_objects(lev3);},
      %{CREATE INDEX idx_lev4 ON doc_objects(lev4);},
      %{CREATE INDEX idx_lev5 ON doc_objects(lev5);},
      %{CREATE INDEX idx_lev6 ON doc_objects(lev6);},
      %{CREATE INDEX idx_endnote_nr ON endnotes(nr);},
      %{CREATE INDEX idx_digest_en ON endnotes(digest_clean);},
      %{CREATE INDEX idx_endnote_nr_asterisk ON endnotes_asterisk(nr);},
      %{CREATE INDEX idx_endnote_asterisk ON endnotes_asterisk(clean);},
      %{CREATE INDEX idx_digest_en_asterisk ON endnotes_asterisk(digest_clean);},
      %{CREATE INDEX idx_endnote_nr_plus ON endnotes_plus(nr);},
      %{CREATE INDEX idx_endnote_plus ON endnotes_plus(clean);},
      %{CREATE INDEX idx_digest_en_plus ON endnotes_plus(digest_clean);},
      %{CREATE INDEX idx_title ON metadata_and_text(title);},
      %{CREATE INDEX idx_author ON metadata_and_text(creator_author);},
      %{CREATE INDEX idx_filename ON metadata_and_text(src_filename);},
      %{CREATE INDEX idx_language ON metadata_and_text(language_document_char);},
      %{CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register)},
    ]
    conn_execute_array(sql_arr)
  end
  def text
    if (@opt.act[:verbose_plus][:set]==:on \
    || @opt.act[:maintenance][:set]==:on)
      print "\n          create documents TEXT indexes\n"
    end
    sql_arr=[
      %{CREATE INDEX idx_clean ON doc_objects(clean);},
      %{CREATE INDEX idx_endnote ON endnotes(clean);}
    ]
    conn_execute_array(sql_arr)
  end
  base
  @opt.act[:psql][:set]==:on ? '' : text
end

#textObject



128
129
130
131
132
133
134
135
136
137
138
# File 'lib/sisu/db_indexes.rb', line 128

def text
  if (@opt.act[:verbose_plus][:set]==:on \
  || @opt.act[:maintenance][:set]==:on)
    print "\n          create documents TEXT indexes\n"
  end
  sql_arr=[
    %{CREATE INDEX idx_clean ON doc_objects(clean);},
    %{CREATE INDEX idx_endnote ON endnotes(clean);}
  ]
  conn_execute_array(sql_arr)
end