Solr PHP support

solr-php-client

A 3rd party PHP library for indexing and searching documents within an Apache Solr installation.

Zip / Tarballs can be found at SolrPhpClient

Apache Solr PHP Extension

The Apache Solr PECL extension is a light-weight, feature-rich library that allows developers using Apache Solr via PHP to communicate easily and efficiently with the Solr web service using an object-oriented API.

The documentation for the PECL extension contains instructions on how to install the extension and is available in the PHP Manual under Search Engine Extensions.

There are 2 parallel releases of the extension:

The php extension can be downloaded from the Apache Solr PECL project home page. Windows binaries can also be found on the extension's page.

A quick list of some of the features of the API include :

The extension currently uses version 2.2 of the xml response format internally.

The contents of the XML response is transformed into native PHP types and the result is returned as a Solr Object instance.

You may also install it by running the following command in the console :

$ pecl install solr

Solarium

Solarium is a Solr client library for PHP applications that not only facilitates Solr communication but also tries to accurately model Solr concepts.

Solr's PHP response format

Solr has a PHP response format that outputs an array (as PHP code) which can be eval'd.

Example usage:

$code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');
eval("\$result = " . $code . ";");
print_r($result);

Solr's PHP Serialized response format

Solr has a PHP response format that outputs a serialized array.

Example usage:

$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);

In order to use either PHP or Serialized PHP Response Writers, you may first need to uncomment these two lines in your solrconfig.xml:

<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>

You can also use the new response writer plugin for PHP here

https://issues.apache.org/jira/browse/SOLR-1967

<code>
<queryResponseWriter name="phpnative" class="org.apache.solr.request.PHPNativeResponseWriter">
<!-- You can choose a different class for your objects. Just make sure the class is available in the client -->
<str name="objectClassName">SolrObject</str>
<!--
0 means OBJECT_PROPERTIES_STORAGE_MODE_INDEPENDENT
1 means OBJECT_PROPERTIES_STORAGE_MODE_COMBINED

In independed mode, each property is a separate property
In combined mode, all the properites are merged into a _properties array.
The combined mode allows you to create custom __getters and you could also implement ArrayAccess, Iterator and Traversable
-->
<int name="objectPropertiesStorageMode">0</int>
</queryResponseWriter

<code>

Also check out how to use it on the client side here

http://www.php.net/manual/en/solrclient.setresponsewriter.php

http://www.php.net/manual/en/solrclient.construct.php


CategoryQueryResponseWriter

Historical

Original Client Code Contributed By Brian Lucas:

There are two classes for PHP: SolrUpdate and SolrQuery.

/!\ :TODO: /!\

- clean up some of the XML writing code -- it's a tad "kludgy" right now.

- abstract out more of the logic into configurable variables

- add back in the logging and debugging classes that clean up the "echo" calls

SolPHP (last edited 2014-03-09 14:44:58 by OmarShaban)