The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MKDoc::SQL::IndexedTable - Table with inverted weighted keyword searches

SUMMARY

MKDoc::SQL::IndexedTable is a subclass of MKDoc::SQL::Table, with the following difference:

The table MUST have a list of weights for the columns which need to be indexed. See new() for details.

The MKDoc::SQL::IndexedTable adds a method, fast_search(), to perform searches on the index table and quickly retrieve records.

$class->new (%arguments);

  MKDoc::SQL::IndexedTable->new (
      name     => $table_name,
      pk       => [ $name1 ],
      cols     => [ { name => $name1, type => $type1 },
                    { name => $name2, type => $type2 } ],
      unique   => { $name1 => [ $col1, $col2 ] }
      index    => { $name2 => [ $col2 ] }
      fk       => { foreign_table => { source_col => target_col } }
      ai       => TRUE / FALSE

      # extra mandatory parameters
      weight   => {
          col1   =>  1,
          col2   =>  2,
          col3   =>  5
      }
  );

$self->fast_search ($condition);

Searches the index table for the keywords from $query, and returns a list of results for that search.

[ $record_id, $weight ], [ $record_id, $weight ], ...