Thanks for the reply Erik! Based on a previous page I used to return queries I've developed this code below for the page I need to do all of the above.
CODE <?php $id = $_GET['id']; $connection = mysqli_connect("localhost", "root", "onion", "collection") or die ("Couldn't connect to MySQL"); define('SOLR_URL', 'http://localhost:8080/solr/'); function request($reqData, $type){ $header[] = "Content-type: text/xml; charset=UTF-8"; $session = curl_init(); curl_setopt($session, CURLOPT_HEADER, true); curl_setopt($session, CURLOPT_HTTPHEADER, $header); curl_setopt($session, CURLOPT_URL, SOLR_URL.$type); curl_setopt($session, CURLOPT_POSTFIELDS, $reqData); curl_setopt($session, CURLOPT_RETURNTRANSFER, 1); curl_setopt($session, CURLOPT_POST, 1); $response = curl_exec($session); curl_close($session); return $response; } function solrQuery($q){ $query = "?q=".trim(urlencode($q))."qf=Message-ID&version=2.2&start=0&rows=999999&indent=on"; return $results = request("", "select".$query); } echo "<html><head><title>IP E-mail</title>"; echo '<link rel="stylesheet" type="text/css" href="stylesheet.css" />'; echo '<script type="text/javascript"> <!-- function confirmation() { var answer = confirm("Remove spam?") if (answer){ alert("Spam removed!") $results = solrQuery('.$id.'); } } //--> </script>'; echo "</head><body>"; echo '<form method="post">'; echo '<table width="100%">'; echo "<tr>"; echo '<td><h1>Trace/Mark IP E-mail</h1><td>'; echo '<td><p align="right">Powered by</p></td>'; echo '<td width="283px"> mysql_logo.jpg </td>'; echo "</tr>"; echo "</table>"; echo "</form>"; /* Send a query to the server */ if ($location = mysqli_query($connection, "SELECT location FROM hashes WHERE message_id = '$id'")) { echo '<br/>'; echo '<p>Mark as: <input type="button" onclick="confirmation()" value="Spam"> <input type="button" value="Non-Business"> <input type="button" value="Non-Confidential"></p>'; print("<h3>Message Location:\n</h3>"); /* Fetch the results of the query */ while( $row = mysqli_fetch_assoc($location) ){ printf("<p>%s\n</p>", $row['location']); } /* Destroy the result set and free the memory used for it */ mysqli_free_result($location); } /* Send a query to the server */ if ($duplicates = mysqli_query($connection, "SELECT location FROM hashes WHERE (md5 = (SELECT md5 FROM hashes WHERE message_id = '$id') AND message_id <> '$id')")) { print("<h3>Duplicate Locations:\n</h3>"); /* Fetch the results of the query */ while( $row = mysqli_fetch_assoc($duplicates) ){ printf("<p>%s\n</p>", $row['location']); } /* Destroy the result set and free the memory used for it */ mysqli_free_result($duplicates); } /* Close the connection */ mysqli_close($connection); $results = explode('<?xml version="1.0" encoding="UTF-8"?>', $results); $results = $results[1]; $dom = new DomDocument; $dom->loadXML($results); $docs = $dom->getElementsByTagName('doc'); foreach ($docs as $doc) { $strings = $doc->getElementsByTagName('arr'); foreach($strings as $str){ $attr = $str->getAttribute('name'); $data = $str->textContent; switch($attr){ case 'Bcc': $Bcc = $data; break; case 'Cc': $Cc = $data; break; case 'Content': $Content = $data; break; case 'Content-Transfer-Encoding': $ContentTransferEncoding = $data; break; case 'Content-Type': $ContentType = $data; break; case 'Date': $Date = $data; break; case 'From': $From = $data; break; case 'Message-ID': $MessageID = $data; break; case 'Mime-Version': $MimeVersion = $data; break; case 'Subject': $Subject = $data; break; case 'To': $To = $data; break; case 'X-FileName': $XFileName = $data; break; case 'X-Folder': $XFolder = $data; break; case 'X-From': $XFrom = $data; break; case 'X-Origin': $XOrigin = $data; break; case 'X-To': $XTo = $data; break; case 'X-bcc': $Xbcc = $data; break; case 'X-cc': $Xcc = $data; break; } } } echo "</body></html>"; ?> /CODE The issue I'm having is working out how to use this to submit a POST delete Solr query on a button click, or how to use the document (once returned, like the query page) and save it in text form to disk (essentially, excluding all XML mark-up)...is this done using Curl (supported)...or AJAX? Any ideas? Cheers. Erik Hatcher wrote: > > > On Apr 10, 2009, at 8:36 PM, Johnny X wrote: >> How could I write some code in PHP to place in a button to remove a >> returned >> item from the index? > > You can issue a delete command to Solr by simply doing a GET (or POST) > to > http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cid%3ESOMEID%3C/id%3E%3C/delete%3Eete%3E%3Cquery%3Esome:query%3C/query%3E%3C/delete%3E&commit=true > > (replace SOMEID with whatever unique id you want, or switch to use the > delete-by-query) > >> In turn, is it possible to copy all of the XML elements from said >> item and >> place them in a document somewhere locally once it's been removed? > > You could do a /select?q=id:SOMEID&fl=* and get all stored field > values (note you'll lose any unstored values) and stash those results > off however you like. > >> Finally, there is one default search field. How do you search on >> multiple >> different fields in PHP? > > Use the dismax parser. /select? > q=whatever&defType=dismax&qf=field1+field2 > > See the wiki docs on dismax for more details and list of other > parameters. > >> If I wanted to search by all of the fields indexed, is that easy to >> code? > > You could list all fields in the qf field of dismax. > > Another option is to copyField all fields you want searchable into a > single field and search that single field. > >> What changes do I need to make in the XML schema? > > To use dismax, no changes to schema are needed (necessarily). > > But you may want to add copyField's to schema.xml to collect all field > text into a single field for default field searchability. > > Erik > > -- View this message in context: http://www.nabble.com/PHP-Remove-From-Index-Search-By-Fields-tp22996701p23016677.html Sent from the Solr - User mailing list archive at Nabble.com.