I am indexing the file using php curl library. I am stuck here with the code
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
$result=move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
if ($result == 1) echo "<p>Upload done .</p>";
$options = getopt("f:");
$infile = $options['f'];
$url = "http://localhost:8983/solr/update/";
$filename = "upload/" . $_FILES["file"]["name"];
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
echo $url;
$post_string = file_get_contents("upload/" . $_FILES["file"]["name"]);
echo $contents;
$header = array("Content-type:text/xml; charset=utf-8");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
$data = curl_exec($ch);
if (curl_errno($ch)) {
print "curl_error:" . curl_error($ch);
} else {
curl_close($ch);
print "curl exited okay\n";
echo "Data returned...\n";
echo "------------------------------------\n";
echo $data;
echo "------------------------------------\n";
}
Nothing is showing as a result. Moreover there is nothing shown in the event log of Apache Solr.
please help me with the code
In the
$post_stringthat you read from your uploaded file, does that file end with a<commit />? Without that nothing will get committed to Solr so make sure your set of commands ends with<commit />.Also, I would highly not recommend this way of updating files. If someone unscrupulous figures out your pipeline and how to run this file, they can easily wreak havoc with your Solr index.