|
- <?php
-
- function solr_search($search){
-
- // 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=content%3A' . $search . '&wt=json';
-
- // 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);
-
- // If no results are found, display a message
- if ($json->response->numFound == '0'){
- $output = 'No results found';
- }
- else{
- foreach ($json->response->docs as $result){
- $content = $result->content;
- $result_output = parse_result($content);
- $results[] = $result_output;
- }
- }
- return $results;
- }
-
- function parse_result($input){
-
- //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 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 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 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];
-
- // 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 $output;
-
- }
-
- function get_random_record(){
-
- // 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';
-
- // 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);
-
- // Pick a random key out of the docs array
- $random = array_rand($json->response->docs);
-
- //Set content variable
- $content = $json->response->docs[$random]->content;
-
- return $content;
- }
-
- function one_random_record (){
-
- $content = get_random_record();
-
- $output = parse_result($content);
-
- return $output;
-
- }
-
- 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;
-
- }
-
-
- ?>
|