NAME

Text::DocumentCollection - a collection of documents

SYNOPSIS

DESCRIPTION

CLASS METHODS

new

The constructor; arguments must be passed as maps from keys to values. The key file is mandatory.

my $c = Text::DocumentCollection->new( file => 'coll.db' );

Documents from the collection are saved as in the specified file, which is currently handled by a DB_File hash.

INSTANCE METHODS

Add

Add a document to the collection, tagging it with a unique key.

$c->Add( $key, $doc );

Add dies if the key is already present.

To change an existing key, use Delete and then Add.

Delete

Discard a document from the collection.

NewFromDB

Loads the collection from the given DB file:

my $c = Text::DocumentCollection->NewFromDB( file => 'coll.db' );

The file must be either empty or created by a former invocation of new or NewFromDB, followed by any number of Add and/or Delete.

Currently, all documents in the collection are revived (by calling NewFromString). This poses performance problems for huge collections; a caching mechanism would be an option in this case.

IDF

Inverse Term frequency of a given term.

The definition we used is, given a term t, a set of documents DOC and the binary relationship has-term:

IDF(t) = log2( #DOC / #{ d in DOC | d has-term t } )

The logarithm is in base 2, since this is related to an information measurement, and # is the cardinality operator.

EnumerateV

Enumerates all the document in the collection. Called as:

my @result = $c->EnumerateV( \&Callback, 'the rock' );

The function Callback will be called on each element of the collection as:

my @l = CallBack( $c, $key, $doc, $rock );

where $rock is the second argument to Callback.

Since $c is the first argument, the callback may be an instance method of Text::DocumentCollection.

The final result is obtained by concatenating all the partial results (@l in the example above). If you do not want a result, simply return the empty list ().

There is no particular order of enumeration, so there is no particular order in which results are concatenated.

AUTHORS

spinellia@acm.org
walter@humans.net