Skip to content

Instantly share code, notes, and snippets.

@evolvingweb
Created February 8, 2010 21:01
Show Gist options
  • Save evolvingweb/298580 to your computer and use it in GitHub Desktop.
Save evolvingweb/298580 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();
// 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;
}
else {
$params[$key] = $value;
}
}
// Replace these arguments as needed.
$solr = new Apache_Solr_Service('example.solrstuff.org', 80, '/solrjs/');
try {
$response = $solr->search($keys, $params['start'], $params['rows'], $params);
}
catch (Exception $e) {
die($e->__toString());
}
print $response->getRawResponse();
}
}
@marklreyes
Copy link

Just curious on the finer details on integrating this php proxy. I've come across a roadblock. Could you evaluate my stackoverflow question and give me your thoughts?

http://stackoverflow.com/questions/20257418/proxy-php-not-working-w-ajax-solr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment