Hi allerseits,
ich hab hier ein ziemliches Problem mit einem Suchscript / Lexikon. Das Script funktioniert soweit, dass es eine Textdb nach Begriffen durchsucht und im Trefferfall entweder:
a)Treffer-Links aus der DB holt, die entsprechenden Dateien dann einliest & einen kurzen Vorschautext ausgibt
b)oder falls kein Link vorhanden, eine Kurzbeschreibung aus der textdb einliest.
Mein Problem ist jetzt, dass er die Links nach Häufigkeit der in den Unterseiten enthaltenen Treffern sortieren sollte. Ich komm soweit, dass die jeweilige Anzahl der Treffer aufgelistet wird, aber weiter gehts irgendwie nicht.
Ich müsste ja eigentlich die aus der Textdb eingelesenen Daten in Abhängigkeit der später eingelesenen Unterseiten sortieren. Geht das überhaupt? Bisher war alles Murks, was ich probiert hab, von daher wär es klasse, wenn jemand weiterhelfen könnte.
Hier mal der Ausschnitt:
Danke im Vorraus
ich hab hier ein ziemliches Problem mit einem Suchscript / Lexikon. Das Script funktioniert soweit, dass es eine Textdb nach Begriffen durchsucht und im Trefferfall entweder:
a)Treffer-Links aus der DB holt, die entsprechenden Dateien dann einliest & einen kurzen Vorschautext ausgibt
b)oder falls kein Link vorhanden, eine Kurzbeschreibung aus der textdb einliest.
Mein Problem ist jetzt, dass er die Links nach Häufigkeit der in den Unterseiten enthaltenen Treffern sortieren sollte. Ich komm soweit, dass die jeweilige Anzahl der Treffer aufgelistet wird, aber weiter gehts irgendwie nicht.
Ich müsste ja eigentlich die aus der Textdb eingelesenen Daten in Abhängigkeit der später eingelesenen Unterseiten sortieren. Geht das überhaupt? Bisher war alles Murks, was ich probiert hab, von daher wär es klasse, wenn jemand weiterhelfen könnte.
Hier mal der Ausschnitt:
PHP-Code:
<?
...
// Prüfen, ob Begriff vorhanden
if (isset($query)) kontrolle($query);
elseif (substr($QUERY_STRING,0,5) == "index") i_control();
else suche("");
function kontrolle($q)
{
$sbegriff = $q;
$ergebnis_arr = suche($q);
$ergzaehl = sizeof($ergebnis_arr);
if ($ergzaehl < 1)
{
echo "$GLOBALS[kein_ergebnis]";
suche($q);
}
else
{
echo "
Erklärungen gefunden : 1 - $ergzaehl für $sbegriff<br/><br/>
";
foreach ($ergebnis_arr as $treffer)
ausgabe($treffer);
}
}
//Begriff in DB suchen
function suche($query)
{
$query = trim(strtolower(entferne($query)));
$suchdaten = @file($GLOBALS[index_file]) or die("$GLOBALS[keine_db]");
//hier evtl. Sortieren??? Bloss wie?
sort($suchdaten);
$pages_found = " ";
foreach ($suchdaten as $search_page)
{
$page_arr = explode("|", $search_page);
$found_count = 0;
$qry_array = split('[, ]+',trim(strtolower($query)));
foreach ($qry_array as $qry)
{
if (in_array($qry, $page_arr))
{
++$found_count;
$pages_found .= $page_arr[0] . " ";
}
}
if ($found_count == count($qry_array)) $ergebnis_arr[] = $page_arr[0];
}
return $ergebnis_arr;
}
function ausgabe($einlese)
{
global $query;
$file = @file($einlese);
if ($file)
{
//gefundene Unterseiten einlesen
$inhalt = implode('', $file);
// Trefferhäufigkeit ermitteln
$anzahl = count( explode( $query, $inhalt ) ) - 1;
echo $anzahl;
//Linktext ermitteln
eregi("<h2>(.*)</h2>", $inhalt, $out);
$title = trim($out[1]);
$inhalt = strip_tags($inhalt);
//Treffer verlinken
$filez = basename ($einlese,".php");
$array = array("$query");
echo "<a href='such.php?text=$filez&suchwort=$query'>";
echo "$title</a><br/>";
//Vorschautext
if (isset($title)&&strlen($title)>0)
$text = "$inhalt";
for($x=0;$x<count($array);$x++)
{
if(stristr($text,$array[$x]))
echo substr(stristr($text,$array[$x]),0, 200)."<br/><br/>";
}
}
//ansonsten Kurzbeschreibung ausgeben
else
{
echo "<p><b>$query</b><br/><br/>$einlese</p>";
}
}
...
?>
Kommentar