Skip to content

Instantly share code, notes, and snippets.

@stalsma
Forked from jpmckinney/proxy.php
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stalsma/8f67d74c7140ff19cc35 to your computer and use it in GitHub Desktop.
Save stalsma/8f67d74c7140ff19cc35 to your computer and use it in GitHub Desktop.
<?php
/**
* @file
* Implements a Solr proxy.
*
* Currently requires json_decode which is bundled with PHP >= 5.2.0.
*
* You must download the SolrPhpClient and store it in the same directory as this file.
*
* http://code.google.com/p/solr-php-client/
*/
require_once(dirname(__FILE__) . '/SolrPhpClient/Apache/Solr/Service.php');
solr_proxy_main();
/**
* Executes the Solr query and returns the JSON response.
*/
function solr_proxy_main() {
if (isset($_POST['query'])) {
$params = array();
$keys = '';
$core = '';
// The names of Solr parameters that may be specified multiple times.
$multivalue_keys = array('bf', 'bq', 'facet.date', 'facet.date.other', 'facet.field', 'facet.query', 'fq', 'pf', 'qf');
$pairs = explode('&', $_POST['query']);
foreach ($pairs as $pair) {
list($key, $value) = explode('=', $pair, 2);
$value = urldecode($value);
if (in_array($key, $multivalue_keys)) {
$params[$key][] = $value;
}
elseif ($key == 'q') {
$keys = $value;
}
elseif ($key == 'core') {
$core = "$value/";
}
else {
$params[$key] = $value;
}
}
// Replace these arguments as needed.
$solr = new Apache_Solr_Service('example.solrstuff.org', 80, '/solrjs/' . $core);
try {
$response = $solr->search($keys, $params['start'], $params['rows'], $params);
}
catch (Exception $e) {
die($e->__toString());
}
print $response->getRawResponse();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment