|
|
@@ -23,109 +23,102 @@ function solr_search($search){ |
|
|
|
$output = 'No results found'; |
|
|
|
} |
|
|
|
else{ |
|
|
|
$output = parse_results($json); |
|
|
|
foreach ($json->response->docs as $result){ |
|
|
|
$content = $result->content; |
|
|
|
$result_output = parse_result($content); |
|
|
|
$results[] = $result_output; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return $output; |
|
|
|
|
|
|
|
return $results; |
|
|
|
} |
|
|
|
|
|
|
|
function parse_results($json_response){ |
|
|
|
|
|
|
|
foreach ($json_response->response->docs as $result){ |
|
|
|
|
|
|
|
$content = $result->content; |
|
|
|
|
|
|
|
//Set document reference number (used for OPS API) |
|
|
|
preg_match('/=D\s(([^\s]*)\s([^\s]*)\s([^\s]*))/', $content, $doc_ref); |
|
|
|
$result_output['doc_ref'] = str_replace(' ','',$doc_ref[1]); |
|
|
|
|
|
|
|
// Search for the application ID in the content element and display it |
|
|
|
preg_match('/Application.*\n(.*)\n/', $content, $application_id); |
|
|
|
$result_output['application_id'] = $application_id[1]; |
|
|
|
function parse_result($input){ |
|
|
|
|
|
|
|
// Search for the EPO publication URL in the content element and display it |
|
|
|
preg_match('/Publication.*\n(.*)\n/', $content, $epo_publication); |
|
|
|
$result_output['epo_publication_url'] = $epo_publication[1]; |
|
|
|
//Set document reference number (used for OPS API) |
|
|
|
preg_match('/=D\s(([^\s]*)\s([^\s]*)\s([^\s]*))/', $input, $doc_ref); |
|
|
|
$output['doc_ref'] = str_replace(' ','',$doc_ref[1]); |
|
|
|
|
|
|
|
// Search for the IPC publication URL in the content element and display it |
|
|
|
preg_match('/IPC.*\n(.*)\n/', $content, $ipc_publication); |
|
|
|
$result_output['ipc_publication_url'] = $ipc_publication[1]; |
|
|
|
// Search for the application ID in the content element and display it |
|
|
|
preg_match('/Application.*\n(.*)\n/', $input, $application_id); |
|
|
|
$output['application_id'] = $application_id[1]; |
|
|
|
|
|
|
|
// Search for the title in the content element and display it |
|
|
|
preg_match('/Title.*\n(.*)\n/', $content, $title); |
|
|
|
$result_output['title'] = $title[1]; |
|
|
|
// Search for the EPO publication URL in the content element and display it |
|
|
|
preg_match('/Publication.*\n(.*)\n/', $input, $epo_publication); |
|
|
|
$output['epo_publication_url'] = $epo_publication[1]; |
|
|
|
|
|
|
|
// Search for the abstract in the content element and display it |
|
|
|
preg_match('/Abstract.*\n(.*)\n/', $content, $abstract); |
|
|
|
$result_output['abstract'] = $abstract[1]; |
|
|
|
// Search for the IPC publication URL in the content element and display it |
|
|
|
preg_match('/IPC.*\n(.*)\n/', $input, $ipc_publication); |
|
|
|
$output['ipc_publication_url'] = $ipc_publication[1]; |
|
|
|
|
|
|
|
$results[] = $result_output; |
|
|
|
// Search for the title in the content element and display it |
|
|
|
preg_match('/Title.*\n(.*)\n/', $input, $title); |
|
|
|
$output['title'] = $title[1]; |
|
|
|
|
|
|
|
// Search for the abstract in the content element and display it |
|
|
|
if (preg_match('/Abstract.*\n(.*)\n/', $input, $abstract)){ |
|
|
|
$output['abstract'] = $abstract[1]; |
|
|
|
} |
|
|
|
else { |
|
|
|
preg_match('/\(.\) \\n\\n(.*)\\n/', $input, $abstract); |
|
|
|
$output['abstract'] = $abstract[1]; |
|
|
|
} |
|
|
|
|
|
|
|
return $results; |
|
|
|
return $output; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function random_record (){ |
|
|
|
function get_random_record(){ |
|
|
|
|
|
|
|
// Generate a random number for sorting by random |
|
|
|
$random = rand(); |
|
|
|
// Generate a random number for sorting by random |
|
|
|
$random = rand(); |
|
|
|
|
|
|
|
// Assemble a query string to send to Solr. This uses the Solr hostname from config.env. Solr's query syntax can be found at many sites including https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html |
|
|
|
// This query retrieves only the bib identifier field for records which satisfy the search query |
|
|
|
$solrurl = 'http://' . $_ENV["SOLR_HOSTNAME"] . ':' . $_ENV["SOLR_PORT"] . '/solr/' . $_ENV["SOLR_CORE"] . '/select?q.op=OR&q=*%3A*&wt=json&sort=random_' . $random . '%20asc'; |
|
|
|
// Assemble a query string to send to Solr. This uses the Solr hostname from config.env. Solr's query syntax can be found at many sites including https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html |
|
|
|
// This query retrieves only the bib identifier field for records which satisfy the search query |
|
|
|
$solrurl = 'http://' . $_ENV["SOLR_HOSTNAME"] . ':' . $_ENV["SOLR_PORT"] . '/solr/' . $_ENV["SOLR_CORE"] . '/select?q.op=OR&q=*%3A*&wt=json&sort=random_' . $random . '%20asc'; |
|
|
|
|
|
|
|
// Perform Curl request on the Solr API |
|
|
|
$ch = curl_init(); |
|
|
|
curl_setopt($ch, CURLOPT_URL, $solrurl); |
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); |
|
|
|
curl_setopt($ch, CURLOPT_HEADER, FALSE); |
|
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); |
|
|
|
$response = curl_exec($ch); |
|
|
|
curl_close($ch); |
|
|
|
// Perform Curl request on the Solr API |
|
|
|
$ch = curl_init(); |
|
|
|
curl_setopt($ch, CURLOPT_URL, $solrurl); |
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); |
|
|
|
curl_setopt($ch, CURLOPT_HEADER, FALSE); |
|
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); |
|
|
|
$response = curl_exec($ch); |
|
|
|
curl_close($ch); |
|
|
|
|
|
|
|
// Turn the API response into useful Json |
|
|
|
$json = json_decode($response); |
|
|
|
// Turn the API response into useful Json |
|
|
|
$json = json_decode($response); |
|
|
|
|
|
|
|
// Pick a random key out of the docs array |
|
|
|
$random = array_rand($json->response->docs); |
|
|
|
// Pick a random key out of the docs array |
|
|
|
$random = array_rand($json->response->docs); |
|
|
|
|
|
|
|
//Set content variable |
|
|
|
$content = $json->response->docs[$random]->content; |
|
|
|
//Set content variable |
|
|
|
$content = $json->response->docs[$random]->content; |
|
|
|
|
|
|
|
//Set document reference number (used for OPS API) |
|
|
|
preg_match('/=D\s(([^\s]*)\s([^\s]*)\s([^\s]*))/', $content, $doc_ref); |
|
|
|
$output['doc_ref'] = str_replace(' ','',$doc_ref[1]); |
|
|
|
return $content; |
|
|
|
} |
|
|
|
|
|
|
|
// Search for the application ID in the content element and display it |
|
|
|
preg_match('/Application.*\n(.*)\n/', $content, $application_id); |
|
|
|
$output['application_id'] = $application_id[1]; |
|
|
|
function one_random_record (){ |
|
|
|
|
|
|
|
// Search for the EPO publication URL in the content element and display it |
|
|
|
preg_match('/Publication.*\n(.*)\n/', $content, $epo_publication); |
|
|
|
$output['epo_publication_url'] = $epo_publication[1]; |
|
|
|
$content = get_random_record(); |
|
|
|
|
|
|
|
// Search for the IPC publication URL in the content element and display it |
|
|
|
preg_match('/IPC.*\n(.*)\n/', $content, $ipc_publication); |
|
|
|
$output['ipc_publication_url'] = $ipc_publication[1]; |
|
|
|
$output = parse_result($content); |
|
|
|
|
|
|
|
// Search for the title in the content element and display it |
|
|
|
preg_match('/Title.*\n(.*)\n/', $content, $title); |
|
|
|
$output['title'] = $title[1]; |
|
|
|
return $output; |
|
|
|
|
|
|
|
// Search for the abstract in the content element and display it |
|
|
|
if (preg_match('/Abstract.*\n(.*)\n/', $content, $abstract)){ |
|
|
|
$output['abstract'] = $abstract[1]; |
|
|
|
} |
|
|
|
else { |
|
|
|
preg_match('/\(.\) \\n\\n(.*)\\n/', $content, $abstract); |
|
|
|
$output['abstract'] = $abstract[1]; |
|
|
|
} |
|
|
|
|
|
|
|
function ten_random_titles (){ |
|
|
|
|
|
|
|
for ($x=0; $x <= 9; $x++) { |
|
|
|
$random = get_random_record(); |
|
|
|
// Search for the title in the content element and display it |
|
|
|
preg_match('/Title.*\n(.*)\n/', $random, $title); |
|
|
|
$output[$x] = $title[1]; |
|
|
|
} |
|
|
|
|
|
|
|
return $output; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
?> |