Mir ging da was durch den Kopf, und zwar:
Bei Google sieht man bei den Resultaten ja immer Ausschnitte aus der Seite einer gewissen Länge mit dem Suchwort highlighted.
Nun ich möchte sowas auch haben
Das Problem hierbei ist die Komplexität.
Hab mir hierbei ein paar Gedanken gemacht:
Man müsste einen Teil des Resultatstrings (welcher eine Länge besitzen kann die den Anzeigungslimit bei weitem übersteigt aber auch kleiner sein könnte) mit substr. rausholen, nur wie berechnet man die Startposition und die Länge des optimalsten Ausschnitts in diesem Fall...
Dazu muss man beachten, dass das Suchwort auch am Anfang des Resultates gefunden werden könnte, wobei man also den Ausschnitt nach rechts verschieben müsste. Das gleiche gilt für das finden des Needles am Ende des Strings.
Der highlightete Needle sollte trozdem möglichst in der mitte des beschnittenen Textes stehen und keine Sätze abhacken, aber trozdem möglichst viele Zeichen vor/nachher anzeigen um die maximale Anzahl Zeichen zu erfüllen und eine möglichst klevere und aussagekräftige Vorschau der Seite zu erhalten.
Ein weiteres zu berücksichtigendes Problem ist auch die Stringlänge des Needles und case-sensitivity aber das wird wohl eher weniger ein Problem darstellen.
Das highlighten eines case-sensitiven Textes mit case-insensitiver Suche hab ich geschafft, doch für mehr ist es für mein Hirn zu komplex
Wer das in einer relativ fehlerfreien Funktion hinbringt, ist nicht normal, darum frage ich euch
schön wäre natürlich:
formatSearchResult($string,$needle,$maxchars)
{
//Beschneiden
//Highlighten
//Zurückgeben
}
Könnte aber zwar sein, dass diese Funktionen eine ganze Formatier Klasse füllen könnten...
Grüsschen
Bei Google sieht man bei den Resultaten ja immer Ausschnitte aus der Seite einer gewissen Länge mit dem Suchwort highlighted.
Nun ich möchte sowas auch haben
Das Problem hierbei ist die Komplexität.
Hab mir hierbei ein paar Gedanken gemacht:
Man müsste einen Teil des Resultatstrings (welcher eine Länge besitzen kann die den Anzeigungslimit bei weitem übersteigt aber auch kleiner sein könnte) mit substr. rausholen, nur wie berechnet man die Startposition und die Länge des optimalsten Ausschnitts in diesem Fall...
Dazu muss man beachten, dass das Suchwort auch am Anfang des Resultates gefunden werden könnte, wobei man also den Ausschnitt nach rechts verschieben müsste. Das gleiche gilt für das finden des Needles am Ende des Strings.
Der highlightete Needle sollte trozdem möglichst in der mitte des beschnittenen Textes stehen und keine Sätze abhacken, aber trozdem möglichst viele Zeichen vor/nachher anzeigen um die maximale Anzahl Zeichen zu erfüllen und eine möglichst klevere und aussagekräftige Vorschau der Seite zu erhalten.
Ein weiteres zu berücksichtigendes Problem ist auch die Stringlänge des Needles und case-sensitivity aber das wird wohl eher weniger ein Problem darstellen.
Das highlighten eines case-sensitiven Textes mit case-insensitiver Suche hab ich geschafft, doch für mehr ist es für mein Hirn zu komplex
Wer das in einer relativ fehlerfreien Funktion hinbringt, ist nicht normal, darum frage ich euch
schön wäre natürlich:
formatSearchResult($string,$needle,$maxchars)
{
//Beschneiden
//Highlighten
//Zurückgeben
}
Könnte aber zwar sein, dass diese Funktionen eine ganze Formatier Klasse füllen könnten...
Grüsschen
Kommentar