solr_get_version
SolrUtils
Solr
PHP Manual

# Examples

Examples of how to use the Apache Solr extension in PHP

Example #1 Contents of the BootStrap file

`<?php
/* Domain name of the Solr server */
define('SOLR_SERVER_HOSTNAME', 'solr.example.com');
/* Whether or not to run in secure mode */
define('SOLR_SECURE', true);
/* HTTP Port to connection */
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));
/* HTTP Basic Authentication Username */
define('SOLR_SERVER_USERNAME', 'admin');
/* HTTP Basic Authentication password */
define('SOLR_SERVER_PASSWORD', 'changeit');
/* HTTP connection timeout */
/* This is maximum time in seconds allowed for the http data transfer operation. Default value is 30 seconds */
define('SOLR_SERVER_TIMEOUT', 10);
/* File name to a PEM-formatted private key + private certificate (concatenated in that order) */
define('SOLR_SSL_CERT', 'certs/combo.pem');
/* File name to a PEM-formatted private certificate only */
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');
/* File name to a PEM-formatted private key */
define('SOLR_SSL_KEY', 'certs/solr.key');
/* Password for PEM-formatted private key file */
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');
/* Name of file holding one or more CA certificates to verify peer with*/
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');
/* Name of directory holding multiple CA certificates to verify peer with */
define('SOLR_SSL_CAPATH', 'certs/');
?>`

Example #2 Adding a document to the index

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$doc = new SolrInputDocument();
$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');
$updateResponse = $client->addDocument($doc);
print_r($updateResponse->getResponse());
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 446
            )

    )

Example #3 Merging one document into another document

`<?php
include "bootstrap.php";
$doc = new SolrDocument();
$second_doc = new SolrDocument();
$doc->addField('id', 1123);
$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";
$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat = 'Information Technology';
$second_doc->addField('cat', 'Lucene Search');
$second_doc->merge($doc, true);
print_r($second_doc->toArray());
?>`

The above example will output something similar to:

    Array
    (
        [document_boost] => 0
        [field_count] => 3
        [fields] => Array
            (
                [0] => SolrDocumentField Object
                    (
                        [name] => cat
                        [boost] => 0
                        [values] => Array
                            (
                                [0] => Software
                                [1] => Custom Search
                                [2] => Information Technology
                            )

                    )

                [1] => SolrDocumentField Object
                    (
                        [name] => id
                        [boost] => 0
                        [values] => Array
                            (
                                [0] => 1123
                            )

                    )

                [2] => SolrDocumentField Object
                    (
                        [name] => features
                        [boost] => 0
                        [values] => Array
                            (
                                [0] => PHP Client Side
                                [1] => Fast development cycles
                            )

                    )

            )

    )

Example #4 Searching for documents - SolrObject responses

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setQuery('lucene');
$query->setStart(0);
$query->setRows(50);
$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');
$query_response = $client->query($query);
$response = $query_response->getResponse();
print_r($response);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 1
                [params] => SolrObject Object
                    (
                        [wt] => xml
                        [rows] => 50
                        [start] => 0
                        [indent] => on
                        [q] => lucene
                        [fl] => cat,features,id,timestamp
                        [version] => 2.2
                    )

            )

        [response] => SolrObject Object
            (
                [numFound] => 3
                [start] => 0
                [docs] => Array
                    (
                        [0] => SolrObject Object
                            (
                                [cat] => Array
                                    (
                                        [0] => Software
                                        [1] => Lucene
                                    )

                                [id] => 334456
                            )

                        [1] => SolrObject Object
                            (
                                [cat] => Array
                                    (
                                        [0] => Software
                                        [1] => Lucene
                                    )

                                [id] => 334455
                            )

                        [2] => SolrObject Object
                            (
                                [cat] => Array
                                    (
                                        [0] => software
                                        [1] => search
                                    )

                                [features] => Array
                                    (
                                        [0] => Advanced Full-Text Search Capabilities using Lucene
                                        [1] => Optimized for High Volume Web Traffic
                                        [2] => Standards Based Open Interfaces - XML and HTTP
                                        [3] => Comprehensive HTML Administration Interfaces
                                        [4] => Scalability - Efficient Replication to other Solr Search Servers
                                        [5] => Flexible and Adaptable with XML configuration and Schema
                                        [6] => Good unicode support: héllo (hello with an accent over the e)
                                    )

                                [id] => SOLR1000
                                [timestamp] => 2009-09-04T20:38:55.906
                            )

                    )

            )

    )

Example #5 Searching for documents - SolrDocument responses

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setQuery('lucene');
$query->setStart(0);
$query->setRows(50);
$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');
$query_response = $client->query($query);
$query_response->setParseMode(SolrQueryResponse::PARSE_SOLR_DOC);
$response = $query_response->getResponse();
print_r($response);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 1
                [params] => SolrObject Object
                    (
                        [wt] => xml
                        [rows] => 50
                        [start] => 0
                        [indent] => on
                        [q] => lucene
                        [fl] => cat,features,id,timestamp
                        [version] => 2.2
                    )

            )

        [response] => SolrObject Object
            (
                [numFound] => 3
                [start] => 0
                [docs] => Array
                    (
                        [0] => SolrDocument Object
                            (
                                [_hashtable_index:SolrDocument:private] => 19740
                            )

                        [1] => SolrDocument Object
                            (
                                [_hashtable_index:SolrDocument:private] => 25485
                            )

                        [2] => SolrDocument Object
                            (
                                [_hashtable_index:SolrDocument:private] => 25052
                            )

                    )

            )

    )

Example #6 Simple TermsComponent example - basic

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setTerms(true);
$query->setTermsField('cat');
$updateResponse = $client->query($query);
print_r($updateResponse->getResponse());
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 2
            )

        [terms] => SolrObject Object
            (
                [cat] => SolrObject Object
                    (
                        [electronics] => 14
                        [Lucene] => 4
                        [Software] => 4
                        [memory] => 3
                        [card] => 2
                        [connector] => 2
                        [drive] => 2
                        [graphics] => 2
                        [hard] => 2
                        [monitor] => 2
                    )

            )

    )

Example #7 Simple TermsComponent example - using a prefix

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setTerms(true);
/* Return only terms starting with $prefix */
$prefix = 'c';
$query->setTermsField('cat')->setTermsPrefix($prefix);
$updateResponse = $client->query($query);
print_r($updateResponse->getResponse());
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 1
            )

        [terms] => SolrObject Object
            (
                [cat] => SolrObject Object
                    (
                        [card] => 2
                        [connector] => 2
                        [camera] => 1
                        [copier] => 1
                    )

            )

    )

Example #8 Simple TermsComponent example - specifying a minimum frequency

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setTerms(true);
/* Return only terms starting with $prefix */
$prefix = 'c';
/* Return only terms with a frequency of 2 or greater */
$min_frequency = 2;
$query->setTermsField('cat')->setTermsPrefix($prefix)->setTermsMinCount($min_frequency);
$updateResponse = $client->query($query);
print_r($updateResponse->getResponse());
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 0
            )

        [terms] => SolrObject Object
            (
                [cat] => SolrObject Object
                    (
                        [card] => 2
                        [connector] => 2
                    )

            )

    )

Example #9 Simple Facet Example

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery('*:*');
$query->setFacet(true);
$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2);
$updateResponse = $client->query($query);
$response_array = $updateResponse->getResponse();
$facet_data = $response_array->facet_counts->facet_fields;
print_r($facet_data);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [cat] => SolrObject Object
            (
                [electronics] => 14
                [memory] => 3
                [Lucene] => 2
                [Software] => 2
                [card] => 2
                [connector] => 2
                [drive] => 2
                [graphics] => 2
                [hard] => 2
                [monitor] => 2
                [search] => 2
                [software] => 2
            )

        [name] => SolrObject Object
            (
                [gb] => 6
                [1] => 3
                [184] => 3
                [2] => 3
                [3200] => 3
                [400] => 3
                [500] => 3
                [ddr] => 3
                [i] => 3
                [ipod] => 3
                [memori] => 3
                [pc] => 3
                [pin] => 3
                [pod] => 3
                [sdram] => 3
                [system] => 3
                [unbuff] => 3
                [canon] => 2
                [corsair] => 2
                [drive] => 2
                [hard] => 2
                [mb] => 2
                [n] => 2
                [power] => 2
                [retail] => 2
                [video] => 2
                [x] => 2
            )

    )

Example #10 Simple Facet Example - with optional field override for mincount

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery('*:*');
$query->setFacet(true);
$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4, 'name');
$updateResponse = $client->query($query);
$response_array = $updateResponse->getResponse();
$facet_data = $response_array->facet_counts->facet_fields;
print_r($facet_data);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [cat] => SolrObject Object
            (
                [electronics] => 14
                [memory] => 3
                [Lucene] => 2
                [Software] => 2
                [card] => 2
                [connector] => 2
                [drive] => 2
                [graphics] => 2
                [hard] => 2
                [monitor] => 2
                [search] => 2
                [software] => 2
            )

        [name] => SolrObject Object
            (
                [gb] => 6
            )

    )

Example #11 Facet Date Example

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);
$client = new SolrClient($options);
$query = new SolrQuery('*:*');
$query->setFacet(true);
$query->addFacetDateField('manufacturedate_dt');
$query->setFacetDateStart('2006-02-13T00:00:00Z');
$query->setFacetDateEnd('2012-02-13T00:00:00Z');
$query->setFacetDateGap('+1YEAR');
$query->setFacetDateHardEnd(1);
$query->addFacetDateOther('before');
$updateResponse = $client->query($query);
$response_array = $updateResponse->getResponse();
$facet_data = $response_array->facet_counts->facet_dates;
print_r($facet_data);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [manufacturedate_dt] => SolrObject Object
            (
                [2006-02-13T00:00:00Z] => 9
                [2007-02-13T00:00:00Z] => 0
                [2008-02-13T00:00:00Z] => 0
                [2009-02-13T00:00:00Z] => 0
                [2010-02-13T00:00:00Z] => 0
                [2011-02-13T00:00:00Z] => 0
                [gap] => +1YEAR
                [start] => 2006-02-13T00:00:00Z
                [end] => 2012-02-13T00:00:00Z
                [before] => 2
            )

    )

Example #12 Connecting to SSL-Enabled Server

`<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
'timeout' => SOLR_SERVER_TIMEOUT,
'secure' => SOLR_SECURE,
'ssl_cert' => SOLR_SSL_CERT_ONLY,
'ssl_key' => SOLR_SSL_KEY,
'ssl_keypassword' => SOLR_SSL_KEYPASSWORD,
'ssl_cainfo' => SOLR_SSL_CAINFO,
);
$client = new SolrClient($options);
$query = new SolrQuery('*:*');
$query->setFacet(true);
$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4, 'name');
$updateResponse = $client->query($query);
$response_array = $updateResponse->getResponse();
$facet_data = $response_array->facet_counts->facet_fields;
print_r($facet_data);
?>`

The above example will output something similar to:

    SolrObject Object
    (
        [cat] => SolrObject Object
            (
                [electronics] => 14
                [memory] => 3
                [Lucene] => 2
                [Software] => 2
                [card] => 2
                [connector] => 2
                [drive] => 2
                [graphics] => 2
                [hard] => 2
                [monitor] => 2
                [search] => 2
                [software] => 2
            )

        [name] => SolrObject Object
            (
                [gb] => 6
            )

    )

solr_get_version
SolrUtils
Solr
PHP Manual