Sorter output efter bedste resultat (sansynligvis)
Jeg har kikket lidt (meget) på hvordan man laver en søgefunktion, mit problem er bare at jeg ikke kan få den til at sortere efter hvad der er mest relevant, er der nogen der kan hjælpe mig med det ?Jeg har mest kikket på denne side http://www.roscripts.com/PHP_search_engine-119.html
Den kode jeg har, indeholder ingen udskrivning, da det ligger i et andet dokument, i må lige sige hvis i vil have det også.
Min kode som består af PHP og MySQL og den ses her ...
<?php
class Cleaner {
// fjerner ord
var $stopwords = array(" hvad ", " hvilke ", " hvordan ", " hvor ", " sådan ", " så ", " er ", " jeg ", " en ", " to ", " laver ", " find ", " finder ", " se ", " så ", " ser ", " jeg ", " dig ");
//fjerner tegn
var $symbols = array('/','\\','\'','"',',','.','<','>','?',';',':','[',']','{','}','|','=','+','-','_',')','(','*','&','^','%','$','#','@','!','~','`' );
function parseString($string) {
$string = ' '.$string.' ';
$string = $this->removeStopwords($string);
$string = $this->removeSymbols($string);
return $string;
}
function removeStopwords($string) {
for ($i = 0; $i < sizeof($this->stopwords); $i++) {
$string = str_replace($this->stopwords[$i],' ',$string);
}
//$string = str_replace(' ',' ',$string);
return trim($string);
}
function removeSymbols($string) {
for ($i = 0; $i < sizeof($this->symbols); $i++) {
$string = str_replace($this->symbols[$i],' ',$string);
}
return trim($string);
}
}
//<
//fordi at det er dansk
$stemmed_string = $string;
//starter Cleaner
$clean_string = new Cleaner();
$stemmed_string = $clean_string->parseString($stemmed_string);
//deler søgetekseten op i et arrya for at fastslå om ordet er på et bokstav
$split = split(" ",$stemmed_string);
foreach ($split as $array => $value) {
if (strlen($value) < 1) {
continue;
}
$new_string .= ''.$value.' ';
}
$new_string=substr($new_string,0,(strLen($new_string)-1));
//deler søgetekseten op i et arrya
$split_stemmed = split(" ",$new_string);
//Starten MySQL eftersprøgelsen
$sql = "SELECT DISTINCT COUNT(*) As occurrences, navn, tekst, ingredienser, id, hm, raiding, stemmer, oprindelse, dato FROM kogebogen WHERE (";
while(list($key,$val)=each($split_stemmed))
{
if($val<>" " and strlen($val) > 0)
{
$sql .= "(navn LIKE '%$val%' OR tekst LIKE '%$val%' OR ingredienser LIKE '%$val%') OR ";
}
}
$sql=substr($sql,0,(strLen($sql)-4)); //fjerne det sidste OR
$sql .= ") GROUP BY id ORDER BY occurrences DESC"; //insætter slutningen af MySQL eftersprøgelsen
?>