NAME
Apache::Solr::Document - Apache Solr (Lucene) Document container
SYNOPSIS
# create and upload a new document
my $doc = Apache::Solr::Document->new(...);
$doc->addField(id => 'tic');
$doc->addFields( {name => 'tac', foot => 'toe'}, boost => 2);
$solr->addDocument($doc, commit => 1, overwrite => 1)
# take results
my $results = $solr->select
( q => 'text:gold' # search text-fields for 'gold'
, hl => { field => 'content' } # highlight 'gold' in content'
);
my $doc = $results->selected(3); # fourth answer
print $doc->rank; # 3
print $doc->uniqueId; # usually the 'id' field
@names = $doc->fieldNames;
print $doc->field('subject')->{content};
print $doc->content('subject'); # same
print $doc->_subject; # same, via autoload (mind the '_'!)
my $hl = $results->highlighted($doc); # another ::Doc object
print $hl->_content; # highlighted field named 'content'
DESCRIPTION
This object wraps-up an document: a set of fields. Either, this is a document which has to be added to the Solr database using Apache::Solr::addDocument(), or the subset of a document as returned by Apache::Solr::select().
METHODS
Constructors
- Apache::Solr::Document->fromResult(HASH, $rank)
-
Create a document object from data received as result of a select search.
- Apache::Solr::Document->new(%options)
-
-Option--Default boost 1.0 fields {}
- boost => FLOAT
-
Boost the preference for hits in this document.
- fields => HASH|ARRAY
-
Passed to addFields().
Accessors
- $obj->addField($name, $content, %options)
-
$content can be specified as SCALAR (reference) for performance. In that case, a reference to the original will be kept. When
undef
, the field gets ignored.-Option--Default boost 1.0 update undef
- $obj->addFields(HASH|ARRAY, %options)
-
The HASH or ARRAY containing NAME/CONTENT pairs. The %options are passed addField() as %options.
- $obj->boost( [$fieldname, [$boost]] )
-
Boost value for all fields in the document.
[0.93] When a FIELD NAME is given, the boost specific for that field is returned (not looking at the document's boost value) This can also be used to set the $boost value for the field.
- $obj->content($name)
-
Returns the content of the first field with $name.
- $obj->field($name)
-
Returns the first field with $name (or undef). This is a HASH, containing
name
,content
and sometimes aboost
key.If you need the content (that's the usually the case), you can also (probably more readible) use the (autoloaded) method NAMEd after the field with a leading '_'.
example:
$doc->field('subject')->{content}; $doc->content('subject); $doc->_subject;
- $obj->fieldNames()
-
All used unique names.
- $obj->fields( [$name] )
-
Returns a list of HASHs, each containing at least a
name
and acontent
. Each HASH will also contain aboost
value. When a $name is provided, only those fields are returned. - $obj->rank()
-
Only defined when the document contains results of a search: the ranking. A value of '0' means "best".
- $obj->uniqueId()
-
Returns the value of the unique key associated with the document
id
. Only the server knowns which field is the unique one. If it differs from the usualid
, you have to set it via global value$Apache::Solr::uniqueKey
Helpers
SEE ALSO
This module is part of Apache-Solr distribution version 1.00, built on December 03, 2014. Website: http://perl.overmeer.net
LICENSE
Copyrights 2012-2014 by [Mark Overmeer]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html