Solr
PHP Manual

Ejemplos

Ejemplos de cómo usar la extensión Apache Solr de PHP

Ejemplo #1 Contenido del archivo BootStrap

<?php

/* Nombre de dominio de servidor Solr */
define('SOLR_SERVER_HOSTNAME''solr.example.com');

/* Si ejecutar en modo seguro */
define('SOLR_SECURE'true);

/* Puerto HTTP para la conexión */
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 8983));

/* Nomre de Usuario de Autenticación Básica de HTTP */
define('SOLR_SERVER_USERNAME''admin');

/* Contraseña de Autenticación Básica de HTTP */
define('SOLR_SERVER_PASSWORD''changeit');

/* Tiempo límite de conexión de HTTP */
/* Esto es el tiempo máximo en segundos permitido para la operación de transferencias de datos de http */
/* El valor predeterminado es 30 segundos. */
define('SOLR_SERVER_TIMEOUT'10);

/* Nombre de archivo a una clave + certificado privados con formato PEM (concatenado en ese ornden */
define('SOLR_SSL_CERT''certs/combo.pem');

/* Nombre de archivo a un certificado privado con formato PEM */
define('SOLR_SSL_CERT_ONLY''certs/solr.crt');

/* Nombre de archivo a una clave privada con formato PEM */
define('SOLR_SSL_KEY''certs/solr.key');

/* Contraseña para el archivo de clave privada con formato PEM */
define('SOLR_SSL_KEYPASSWORD''StrongAndSecurePassword');

/* Nombre del archivo que mantiene uno o más certificados CA para ser verificados con su par */
define('SOLR_SSL_CAINFO''certs/cacert.crt');

/* Nombre del directorio que mantiene múltiples certificados CA para ser verificados con su par */
define('SOLR_SSL_CAPATH''certs/');

?>

Ejemplo #2 Añadir un documento al índice

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$doc = new SolrInputDocument();

$doc->addField('id'334455);
$doc->addField('cat''Software');
$doc->addField('cat''Lucene');

$respuestaActualización $cliente->addDocument($doc);

print_r($respuestaActualización->getResponse());

?>

El resultado del ejemplo sería algo similar a:

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

)

Ejemplo #3 Fusionar un documento con otro documento

<?php

include "bootstrap.php";

$doc = new SolrDocument();

$segundo_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';

$segundo_doc->addField('cat''Lucene Search');

$segundo_doc->merge($doctrue);

print_r($segundo_doc->toArray());


?>

El resultado del ejemplo sería algo similar a:

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
                        )

                )

        )

)

Ejemplo #4 Buscar documentos - respuestas de SolrObject

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery();

$consulta->setQuery('lucene');

$consulta->setStart(0);

$consulta->setRows(50);

$consulta->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$respuesta_consulta $cliente->query($consulta);

$respuesta $respuesta_consulta->getResponse();

print_r($respuesta);

?>

El resultado del ejemplo sería algo similar a:

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
                        )

                )

        )

)

Ejemplo #5 Buscar documentos - respuestas de SolrDocument

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery();

$consulta->setQuery('lucene');

$consulta->setStart(0);

$consulta->setRows(50);

$consulta->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$respuesta_consulta $cliente->query($consulta);

$respuesta_consulta->setParseMode(SolrQueryResponse::PARSE_SOLR_DOC);

$respuesta $respuesta_consulta->getResponse();

print_r($respuesta);

?>

El resultado del ejemplo sería algo similar a:

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
                        )

                )

        )

)

Ejemplo #6 Ejemplo sencillo de TermsComponent - básico

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery();

$consulta->setTerms(true);

$consulta->setTermsField('cat');

$respuestaActualización $cliente->query($consulta);

print_r($respuestaActualización->getResponse());

?>

El resultado del ejemplo sería algo similar a:

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
                )

        )

)

Ejemplo #7 Ejemplo sencillo de TermsComponent - usar un prefijo

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery();

$consulta->setTerms(true);

/* Devolver sólo los términos que empiecen con $prefijo */
$prefijo 'c';

$consulta->setTermsField('cat')->setTermsPrefix($prefijo);

$respuestaActualización $cliente->query($consulta);

print_r($respuestaActualización->getResponse());

?>

El resultado del ejemplo sería algo similar a:

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

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

        )

)

Ejemplo #8 Ejemplo sencillo de TermsComponent - especificar una frecuencia mínima

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery();

$consulta->setTerms(true);

/* Devolver sólo los términos que empiecen con $prefijo */
$prefijo 'c';

/* Devolver sólo los términos con una frecuencia de 2 o mayor */
$frecuencia_mín 2;

$consulta->setTermsField('cat')->setTermsPrefix($prefijo)->setTermsMinCount($frecuencia_mín);

$respuestaActualización $cliente->query($consulta);

print_r($respuestaActualización->getResponse());

?>

El resultado del ejemplo sería algo similar a:

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

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

        )

)

Ejemplo #9 Ejemplo sencillo de Facet

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery('*:*');

$consulta->setFacet(true);

$consulta->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2);

$respuestaActualización $cliente->query($consulta);

$matriz_respuesta $respuestaActualización->getResponse();

$datos_faceta $matriz_respuesta->facet_counts->facet_fields;

print_r($datos_faceta);

?>

El resultado del ejemplo sería algo similar a:

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
        )

)

Ejemplo #10 Ejemplo sencillo de Facet - con sobrescritura de campo opcional para mincount

<?php

include "bootstrap.php";

$opciones = array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery('*:*');

$consulta->setFacet(true);

$consulta->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4'name');

$respuestaActualización $cliente->query($consulta);

$matriz_respuesta $respuestaActualización->getResponse();

$datos_faceta $matriz_respuesta->facet_counts->facet_fields;

print_r($datos_faceta);

?>

El resultado del ejemplo sería algo similar a:

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
        )

)

Ejemplo #11 Conectar a un Servidor con SSL Habilitado

<?php

include "bootstrap.php";

$opciones = 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,
);

$cliente = new SolrClient($opciones);

$consulta = new SolrQuery('*:*');

$consulta->setFacet(true);

$consulta->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4'name');

$respuestaActualización $cliente->query($consulta);

$matriz_respuesta $respuestaActualización->getResponse();

$datos_faceta $matriz_respuesta->facet_counts->facet_fields;

print_r($datos_faceta);

?>

El resultado del ejemplo sería algo similar a:

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
PHP Manual