&reftitle.examples;
Examples of how to use the Apache Solr extension in PHP
Contents of the BootStrap file
]]>
Adding a document to the index
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());
?>
]]>
&example.outputs.similar;
SolrObject Object
(
[status] => 0
[QTime] => 446
)
)
]]>
Merging one document into another document
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());
?>
]]>
&example.outputs.similar;
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
)
)
)
)
]]>
Searching for documents - SolrObject responses
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);
?>
]]>
&example.outputs.similar;
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
)
)
)
)
]]>
Searching for documents - SolrDocument responses
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);
?>
]]>
&example.outputs.similar;
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
)
)
)
)
]]>
Simple TermsComponent example - basic
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());
?>
]]>
&example.outputs.similar;
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
)
)
)
]]>
Simple TermsComponent example - using a prefix
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());
?>
]]>
&example.outputs.similar;
SolrObject Object
(
[status] => 0
[QTime] => 1
)
[terms] => SolrObject Object
(
[cat] => SolrObject Object
(
[card] => 2
[connector] => 2
[camera] => 1
[copier] => 1
)
)
)
]]>
Simple TermsComponent example - specifying a minimum frequency
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());
?>
]]>
&example.outputs.similar;
SolrObject Object
(
[status] => 0
[QTime] => 0
)
[terms] => SolrObject Object
(
[cat] => SolrObject Object
(
[card] => 2
[connector] => 2
)
)
)
]]>
Simple Facet Example
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);
?>
]]>
&example.outputs.similar;
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
)
)
]]>
Simple Facet Example - with optional field override for mincount
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);
?>
]]>
&example.outputs.similar;
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
)
)
]]>
Connecting to SSL-Enabled Server
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);
?>
]]>
&example.outputs.similar;
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
)
)
]]>