mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
1280 lines
32 KiB
XML
1280 lines
32 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 2a7aebe77caee004a693bf5acac6b132e0a67786 Maintainer: sergey Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
|
||
<chapter xml:id="solr.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
&reftitle.examples;
|
||
|
||
<para>
|
||
Примеры использования модуля Apache Solr в PHP
|
||
</para>
|
||
<example>
|
||
<title>Содержимое файла BootStrap</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
|
||
<?php
|
||
|
||
/* Доменное имя сервера Solr */
|
||
define('SOLR_SERVER_HOSTNAME', 'solr.example.com');
|
||
|
||
/* Следует ли запускать в безопасном режиме */
|
||
define('SOLR_SECURE', true);
|
||
|
||
/* HTTP-порт для подключения */
|
||
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));
|
||
|
||
/* Имя пользователя для базовой аутентификации HTTP */
|
||
define('SOLR_SERVER_USERNAME', 'admin');
|
||
|
||
/* Пароль базовой аутентификации HTTP */
|
||
define('SOLR_SERVER_PASSWORD', 'changeit');
|
||
|
||
/* Время ожидания HTTP-соединения */
|
||
/* Это максимальное время в секундах, разрешённое для операции передачи данных http. Значение по умолчанию - 30 секунд */
|
||
define('SOLR_SERVER_TIMEOUT', 10);
|
||
|
||
/* Имя файла для закрытого ключа в формате PEM + закрытый сертификат (объединены в указанном порядке) */
|
||
define('SOLR_SSL_CERT', 'certs/combo.pem');
|
||
|
||
/* Имя файла только для частного сертификата в формате PEM */
|
||
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');
|
||
|
||
/* Имя файла для закрытого ключа в формате PEM */
|
||
define('SOLR_SSL_KEY', 'certs/solr.key');
|
||
|
||
/* Пароль для файла закрытого ключа в формате PEM */
|
||
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');
|
||
|
||
/* Имя файла, содержащего один или несколько сертификатов CA для проверки однорангового узла */
|
||
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');
|
||
|
||
/* Имя каталога, содержащего несколько сертификатов CA для проверки однорангового узла */
|
||
define('SOLR_SSL_CAPATH', 'certs/');
|
||
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
|
||
</example>
|
||
|
||
<example>
|
||
<title>Добавление документа в индекс</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
|
||
<?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());
|
||
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
SolrObject Object
|
||
(
|
||
[responseHeader] => SolrObject Object
|
||
(
|
||
[status] => 0
|
||
[QTime] => 446
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Слияние одного документа с другим</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
|
||
<?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());
|
||
|
||
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
|
||
<example>
|
||
<title>Поиск документов - ответы SolrObject</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
|
||
<?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);
|
||
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Поиск документов - ответы SolrDocument</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
|
||
<?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);
|
||
|
||
?>
|
||
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Simple TermsComponent</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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());
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Simple TermsComponent - использование префикса</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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());
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
SolrObject Object
|
||
(
|
||
[responseHeader] => SolrObject Object
|
||
(
|
||
[status] => 0
|
||
[QTime] => 1
|
||
)
|
||
|
||
[terms] => SolrObject Object
|
||
(
|
||
[cat] => SolrObject Object
|
||
(
|
||
[card] => 2
|
||
[connector] => 2
|
||
[camera] => 1
|
||
[copier] => 1
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Simple TermsComponent - указание минимальной частоты</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
/* Возвращать только термины, начинающиеся с $prefix */
|
||
$prefix = 'c';
|
||
|
||
/* Возвращать только термины с частотой 2 или более */
|
||
$min_frequency = 2;
|
||
|
||
$query->setTermsField('cat')->setTermsPrefix($prefix)->setTermsMinCount($min_frequency);
|
||
|
||
$updateResponse = $client->query($query);
|
||
|
||
print_r($updateResponse->getResponse());
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
SolrObject Object
|
||
(
|
||
[responseHeader] => SolrObject Object
|
||
(
|
||
[status] => 0
|
||
[QTime] => 0
|
||
)
|
||
|
||
[terms] => SolrObject Object
|
||
(
|
||
[cat] => SolrObject Object
|
||
(
|
||
[card] => 2
|
||
[connector] => 2
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Simple Facet</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Simple Facet - с необязательным переопределением поля для mincount</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Facet Date</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Подключение к серверу с поддержкой SSL</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
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
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
|
||
<example>
|
||
<title>Сворачивание <type>SolrQuery</type></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
include "bootstrap.php";
|
||
|
||
$options = array
|
||
(
|
||
'hostname' => SOLR_SERVER_HOSTNAME,
|
||
'login' => SOLR_SERVER_USERNAME,
|
||
'password' => SOLR_SERVER_PASSWORD,
|
||
'port' => SOLR_SERVER_PORT,
|
||
'path' => SOLR_SERVER_PATH
|
||
);
|
||
|
||
$client = new SolrClient($options);
|
||
|
||
$query = new SolrQuery('*:*');
|
||
|
||
$collapseFunction = new SolrCollapseFunction('manu_id_s');
|
||
|
||
$collapseFunction
|
||
->setSize(2)
|
||
->setNullPolicy(SolrCollapseFunction::NULLPOLICY_IGNORE);
|
||
|
||
$query
|
||
->collapse($collapseFunction)
|
||
->setRows(4);
|
||
|
||
$queryResponse = $client->query($query);
|
||
|
||
$response = $queryResponse->getResponse();
|
||
|
||
print_r($response);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
SolrObject Object
|
||
(
|
||
[responseHeader] => SolrObject Object
|
||
(
|
||
[status] => 0
|
||
[QTime] => 1
|
||
[params] => SolrObject Object
|
||
(
|
||
[q] => *:*
|
||
[indent] => on
|
||
[fq] => {!collapse field=manu_id_s size=2 nullPolicy=ignore}
|
||
[rows] => 4
|
||
[version] => 2.2
|
||
[wt] => xml
|
||
)
|
||
|
||
)
|
||
|
||
[response] => SolrObject Object
|
||
(
|
||
[numFound] => 14
|
||
[start] => 0
|
||
[docs] => Array
|
||
(
|
||
[0] => SolrObject Object
|
||
(
|
||
[id] => SP2514N
|
||
[name] => Array
|
||
(
|
||
[0] => Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133
|
||
)
|
||
|
||
[manu] => Array
|
||
(
|
||
[0] => Samsung Electronics Co. Ltd.
|
||
)
|
||
|
||
[manu_id_s] => samsung
|
||
[cat] => Array
|
||
(
|
||
[0] => electronics
|
||
[1] => hard drive
|
||
)
|
||
|
||
[features] => Array
|
||
(
|
||
[0] => 7200RPM, 8MB cache, IDE Ultra ATA-133
|
||
[1] => NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor
|
||
)
|
||
|
||
[price] => Array
|
||
(
|
||
[0] => 92
|
||
)
|
||
|
||
[popularity] => Array
|
||
(
|
||
[0] => 6
|
||
)
|
||
|
||
[inStock] => Array
|
||
(
|
||
[0] => 1
|
||
)
|
||
|
||
[manufacturedate_dt] => 2006-02-13T15:26:37Z
|
||
[store] => Array
|
||
(
|
||
[0] => 35.0752,-97.032
|
||
)
|
||
|
||
[_version_] => 1510294336412057600
|
||
)
|
||
|
||
[1] => SolrObject Object
|
||
(
|
||
[id] => 6H500F0
|
||
[name] => Array
|
||
(
|
||
[0] => Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300
|
||
)
|
||
|
||
[manu] => Array
|
||
(
|
||
[0] => Maxtor Corp.
|
||
)
|
||
|
||
[manu_id_s] => maxtor
|
||
[cat] => Array
|
||
(
|
||
[0] => electronics
|
||
[1] => hard drive
|
||
)
|
||
|
||
[features] => Array
|
||
(
|
||
[0] => SATA 3.0Gb/s, NCQ
|
||
[1] => 8.5ms seek
|
||
[2] => 16MB cache
|
||
)
|
||
|
||
[price] => Array
|
||
(
|
||
[0] => 350
|
||
)
|
||
|
||
[popularity] => Array
|
||
(
|
||
[0] => 6
|
||
)
|
||
|
||
[inStock] => Array
|
||
(
|
||
[0] => 1
|
||
)
|
||
|
||
[store] => Array
|
||
(
|
||
[0] => 45.17614,-93.87341
|
||
)
|
||
|
||
[manufacturedate_dt] => 2006-02-13T15:26:37Z
|
||
[_version_] => 1510294336449806336
|
||
)
|
||
|
||
[2] => SolrObject Object
|
||
(
|
||
[id] => F8V7067-APL-KIT
|
||
[name] => Array
|
||
(
|
||
[0] => Belkin Mobile Power Cord for iPod w/ Dock
|
||
)
|
||
|
||
[manu] => Array
|
||
(
|
||
[0] => Belkin
|
||
)
|
||
|
||
[manu_id_s] => belkin
|
||
[cat] => Array
|
||
(
|
||
[0] => electronics
|
||
[1] => connector
|
||
)
|
||
|
||
[features] => Array
|
||
(
|
||
[0] => car power adapter, white
|
||
)
|
||
|
||
[weight] => Array
|
||
(
|
||
[0] => 4
|
||
)
|
||
|
||
[price] => Array
|
||
(
|
||
[0] => 19.95
|
||
)
|
||
|
||
[popularity] => Array
|
||
(
|
||
[0] => 1
|
||
)
|
||
|
||
[inStock] => Array
|
||
(
|
||
[0] =>
|
||
)
|
||
|
||
[store] => Array
|
||
(
|
||
[0] => 45.18014,-93.87741
|
||
)
|
||
|
||
[manufacturedate_dt] => 2005-08-01T16:30:25Z
|
||
[_version_] => 1510294336458194944
|
||
)
|
||
|
||
[3] => SolrObject Object
|
||
(
|
||
[id] => MA147LL/A
|
||
[name] => Array
|
||
(
|
||
[0] => Apple 60 GB iPod with Video Playback Black
|
||
)
|
||
|
||
[manu] => Array
|
||
(
|
||
[0] => Apple Computer Inc.
|
||
)
|
||
|
||
[manu_id_s] => apple
|
||
[cat] => Array
|
||
(
|
||
[0] => electronics
|
||
[1] => music
|
||
)
|
||
|
||
[features] => Array
|
||
(
|
||
[0] => iTunes, Podcasts, Audiobooks
|
||
[1] => Stores up to 15,000 songs, 25,000 photos, or 150 hours of video
|
||
[2] => 2.5-inch, 320x240 color TFT LCD display with LED backlight
|
||
[3] => Up to 20 hours of battery life
|
||
[4] => Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video
|
||
[5] => Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication
|
||
)
|
||
|
||
[includes] => Array
|
||
(
|
||
[0] => earbud headphones, USB cable
|
||
)
|
||
|
||
[weight] => Array
|
||
(
|
||
[0] => 5.5
|
||
)
|
||
|
||
[price] => Array
|
||
(
|
||
[0] => 399
|
||
)
|
||
|
||
[popularity] => Array
|
||
(
|
||
[0] => 10
|
||
)
|
||
|
||
[inStock] => Array
|
||
(
|
||
[0] => 1
|
||
)
|
||
|
||
[store] => Array
|
||
(
|
||
[0] => 37.7752,-100.0232
|
||
)
|
||
|
||
[manufacturedate_dt] => 2005-10-12T08:00:00Z
|
||
[_version_] => 1510294336562003968
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Пример использования Solr Real Time Get (RTG) <function>SolrClient::getById</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
include "bootstrap.php";
|
||
|
||
$options = array
|
||
(
|
||
'hostname' => SOLR_SERVER_HOSTNAME,
|
||
'login' => SOLR_SERVER_USERNAME,
|
||
'password' => SOLR_SERVER_PASSWORD,
|
||
'port' => SOLR_SERVER_PORT,
|
||
'path' => SOLR_SERVER_PATH
|
||
);
|
||
|
||
$client = new SolrClient($options);
|
||
$response = $client->getById('GB18030TEST');
|
||
print_r($response->getResponse());
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
SolrObject Object
|
||
(
|
||
[doc] => SolrObject Object
|
||
(
|
||
[id] => GB18030TEST
|
||
[name] => Array
|
||
(
|
||
[0] => Test with some GB18030 encoded characters
|
||
)
|
||
|
||
[features] => Array
|
||
(
|
||
[0] => No accents here
|
||
[1] => 这是一个功能
|
||
[2] => This is a feature (translated)
|
||
[3] => 这份文件是很有光泽
|
||
[4] => This document is very shiny (translated)
|
||
)
|
||
|
||
[price] => Array
|
||
(
|
||
[0] => 0
|
||
)
|
||
|
||
[inStock] => Array
|
||
(
|
||
[0] => 1
|
||
)
|
||
|
||
[_version_] => 1510294336239042560
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
|
||
</chapter>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|