Created
February 8, 2010 21:01
-
-
Save evolvingweb/298580 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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