@@ -0,0 +1,31 @@ | |||
<?php | |||
# @name: compare.php | |||
# @version: 0.1 | |||
# @creation_date: 2021-09-30 | |||
# @license: The MIT License <https://opensource.org/licenses/MIT> | |||
# @author: Simon Bowie <ad7588@coventry.ac.uk> | |||
# @purpose: Displays two random records from the Solr index | |||
?> | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<link rel="stylesheet" type="text/css" href="css/style.css"> | |||
<script> | |||
function resizeIframe(obj) { | |||
obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 'px'; | |||
} | |||
</script> | |||
</head> | |||
<body> | |||
<div class="box"> | |||
<iframe src="./random.php" frameborder="0" scrolling="no" onload="resizeIframe(this)" align="left"> </iframe> | |||
</div> | |||
<div class="box"> | |||
<iframe src="./random.php" frameborder="0" scrolling="no" onload="resizeIframe(this)" align="right"></iframe> | |||
</div> | |||
</body> | |||
</html> |
@@ -0,0 +1,7 @@ | |||
.box{ | |||
float:left; | |||
margin-right:20px; | |||
} | |||
.clear{ | |||
clear:both; | |||
} |
@@ -0,0 +1,27 @@ | |||
<!-- | |||
# @name: index.html | |||
# @version: 0.1 | |||
# @creation_date: 2021-09-24 | |||
# @license: The MIT License <https://opensource.org/licenses/MIT> | |||
# @author: Simon Bowie <ad7588@coventry.ac.uk> | |||
# @purpose: Home page for the application | |||
--> | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
</head> | |||
<body> | |||
<form action="search.php" method="POST"> | |||
<input type="text" name="search" placeholder="search for a patent record"> | |||
<input type="submit" value="search"> | |||
</form> | |||
<a href="./random.php">show a random record</a> | |||
<a href="./compare.php">compare two random records</a> | |||
</body> | |||
</html> |
@@ -1,13 +1,13 @@ | |||
<?php | |||
# @name: index.php | |||
# @name: random.php | |||
# @version: 0.1 | |||
# @creation_date: 2021-09-24 | |||
# @license: The MIT License <https://opensource.org/licenses/MIT> | |||
# @author: Simon Bowie <ad7588@coventry.ac.uk> | |||
# @purpose: Home page for the application | |||
# @purpose: Displays a random record from the Solr index | |||
include '../random.php'; | |||
include '../solr.php'; | |||
include '../ops_api.php'; | |||
$random_record = random_record(); |
@@ -0,0 +1,77 @@ | |||
<?php | |||
# @name: search.php | |||
# @version: 0.1 | |||
# @creation_date: 2021-09-30 | |||
# @license: The MIT License <https://opensource.org/licenses/MIT> | |||
# @author: Simon Bowie <ad7588@coventry.ac.uk> | |||
# @purpose: Searches the Solr index | |||
include '../solr.php'; | |||
?> | |||
<?php | |||
$search_results = solr_search($_POST["search"]); | |||
//print_r($search_results); | |||
foreach($search_results as $result): | |||
?> | |||
Application ID: | |||
<?php | |||
echo $result['application_id']; | |||
?> | |||
<br><br> | |||
EPO publication: | |||
<a href=<?php echo $result['epo_publication_url']; ?>> | |||
<?php | |||
echo $result['epo_publication_url']; | |||
?> | |||
</a> | |||
<br><br> | |||
IPC publication: | |||
<a href=<?php echo $result['ipc_publication_url']; ?>> | |||
<?php | |||
echo $result['ipc_publication_url']; | |||
?> | |||
</a> | |||
<br><br> | |||
Title: | |||
<?php | |||
echo $result['title']; | |||
?> | |||
<br><br> | |||
<?php | |||
if ($result['abstract']): | |||
?> | |||
Abstract: | |||
<?php | |||
echo $result['abstract']; | |||
?> | |||
<br><br> | |||
<? | |||
endif; | |||
?> | |||
<?php | |||
endforeach; | |||
?> |
@@ -1,58 +0,0 @@ | |||
<?php | |||
function 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; | |||
//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]); | |||
// 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]; | |||
// 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]; | |||
// 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]; | |||
// Search for the title in the content element and display it | |||
preg_match('/Title.*\n(.*)\n/', $content, $title); | |||
$output['title'] = $title[1]; | |||
// Search for the abstract in the content element and display it | |||
preg_match('/Abstract.*\n(.*)\n/', $content, $abstract); | |||
$output['abstract'] = $abstract[1]; | |||
return $output; | |||
} | |||
?> |
@@ -0,0 +1,126 @@ | |||
<?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{ | |||
$output = parse_results($json); | |||
} | |||
return $output; | |||
} | |||
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]; | |||
// 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]; | |||
// 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 title in the content element and display it | |||
preg_match('/Title.*\n(.*)\n/', $content, $title); | |||
$result_output['title'] = $title[1]; | |||
// Search for the abstract in the content element and display it | |||
preg_match('/Abstract.*\n(.*)\n/', $content, $abstract); | |||
$result_output['abstract'] = $abstract[1]; | |||
$results[] = $result_output; | |||
} | |||
return $results; | |||
} | |||
function 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; | |||
//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]); | |||
// 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]; | |||
// 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]; | |||
// 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]; | |||
// Search for the title in the content element and display it | |||
preg_match('/Title.*\n(.*)\n/', $content, $title); | |||
$output['title'] = $title[1]; | |||
// Search for the abstract in the content element and display it | |||
preg_match('/Abstract.*\n(.*)\n/', $content, $abstract); | |||
$output['abstract'] = $abstract[1]; | |||
return $output; | |||
} | |||
?> |