Variable
num_of_sent
determines max number of sentences sentences we want to show in search result.In PHP block we break all search words into an array
$search_terms
. Then we break article into sentences and compare each search word with word from sentence.One match gives increment variable
rel
by one. Every word from article is compared with search keywords but the same sentences wont appear twice in search result.When
num_of_sen
reaches desired value string $os that is sent to highlighting wont get any additional string and rel
will continue to increase with every hit.<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Search, Highlight and Show Extract</title> </head> <body> Enter keywords<form action='extract.php' method='post'> <input type='text' name='search' value=''/> <input type='submit'/> </form> <p>The HTML and CSS make your web site nice. So Roger knowledge of the PHP code that runs on backend machine is also good. Most people choose to use <u>databases with PHP's functions</u>, which are php the focus of this course. You can include CSS with include file or keep it in CSS file. It is impotrant that you have a single file to upadate the styles. It is not recomended to change php file on the fly. It is impotrant a single file to upadate the styles.</p> <?php $num_of_sent = 3; if ($_POST['search'] != ""){ $os = array(); $rel = 0; // relevance $search_terms = explode(' ',$_POST['search']); for ($i = 0; $i < count($search_terms); $i++) { if (strcmp ($search_terms[$i], strtolower($search_terms[$i])) != 0) continue; // Convert all letters to uppercase array_push($search_terms,strtoupper($search_terms[$i])); // Make first character uppercase array_push($search_terms,ucfirst($search_terms[$i])); } // text to be searched $text = "The HTML and CSS make your web site nice. So Roger knowledge of the PHP code that runs on backend machine is also good. Most people choose to use <u>databases with PHP's functions</u>, which are php the focus of this course. You can include CSS with include file or keep it in CSS file. It is impotrant that you have a single file to upadate the styles. It is not recomended to change php file on the fly. It is impotrant a single file to upadate the styles."; echo "<hr/>"; $text = strip_tags($text); $sent = explode('.',$text); for ($i = 0; $i < count($sent); $i++) { $words = explode(' ',trim($sent[$i])); for ($j = 0; $j < count($words); $j++) { for ($k = 0; $k < count($search_terms); $k++) { if($search_terms[$k] == $words[$j]){ // Add relevance $rel ++; // $num_of_sent is the max number of // highlighted sentences we want to see // in search result if ($rel < $num_of_sent){ // if sentence dont exists in array put it there if(!in_array($sent[$i],$os)) array_push($os,$sent[$i]); } } } } } // Convert array $os to string in order to highlight it $oss = implode(" ", $os); echo "<h3>Highlighted extract</h3>"; // highlight $colors = array('FFFF00','FF9900','FF0000','FF00FF','99FF33','33FFCC','FF99FF','00CC33'); $patterns = array(); $replacements = array(); for ($i = 0, $j = count($search_terms); $i < $j; $i++) { $patterns[$i] = '/b'.preg_quote($search_terms[$i], '/').'b/'; $replacements[$i] = '<b style="color:black;background-color:#' . $colors[$i % 8] .'">' . $search_terms[$i] . '</b>'; } if ($j) { while ($oss) { if (preg_match('{^([^<]*)?(</?[^>]+?>)?(.*)$}s',$oss,$matches)) { print preg_replace($patterns,$replacements,$matches[1]); print $matches[2]; $oss = $matches[3]; } } } else { print $oss; } echo "<h1>Relevance $rel</h1>"; } ?> </body> </html>Variable
rel
is used for sorting purposes and it should be assigned to every article .
No comments:
Post a Comment