Highlight bei Volltext Suche

sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Beitrag von sandra07 »

Halchteranerin hat geschrieben:hast du die Klasse sSearchMark in der css-Datei definiert?
Ja klar, auf der Ergebnisseite geht die Highlight-Funktion auch tadellos!
Gruss
Sandra
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

wo ist der Fehler?

Beitrag von sandra07 »

Plötzlich hat es bei einem Suchbegriff geklappt ....

Hier mal das Phänomen:

Ich suche nach einem Wort, das in einem bestimmten Artikel vorkommt.

Ich suche nun nach "Anmeldung" - die Highlight - Funktion geht nicht
Ich suche nach "untenstehendem" - die Highlight - Funktion geht!!!!
Ich suche nach "Formular" - die Highlight - Funktion geht ncht

Fazit: die Hightlight - Funktion auf den Artikelseiten zeigt nur klein geschriebene Wörter an! Auf der Ergebnisseite funkt. auch die Grossen Worte. Es müsste wohl ein Problem mit der Uebergabe auf die front_content.php sein?!?

Juhuuu, ich bin wohl wieder ein Schritt weiter :roll:

Wie kann ich das abändern?
Gruss
Sandra
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Noch eine Frage...

Beitrag von sandra07 »

Hallo, ich bin schon wieder ein Schritt weitergekommen. Es werden nun die grossen wie auch die kleinen Wörter angezeigt. Allerdings immer nur wenn mit einem einzigen Suchwort gesucht wird und dieses auch richtig geschrieben wurde (Gross- und Kleinschreibungsproblem).

Zum Problem "mehrere Suchwörter" nehme ich an, dass ich folgenden Link abändern muss, denn der Browser zeigt folgendes:
/cms/front_content.php?suchtext=Restaurant%20Heinzelmann&client=1&lang=1&parent=1&idcat=8&idart=15

Wie ändere ich diesen Link, dass anstelle von %20 ein "+" angezeigt wird?

Code: Alles auswählen

$results[$num][link] = "front_content.php?suchtext=$suche&client=$client&lang=$lang&parent=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart").""; 
Zum Problem Gross- und Kleinschreibung:
Da nehme ich mal an, dass die das Text(HMTL) Modul noch anpassen muss. Aber wie?

Code: Alles auswählen

<?php
$artikeltext = "CMS_HTML[1]";
$suchtext = "$_GET[suchtext]";
$artikeltext = str_replace("$suchtext", "<span class=\"sSearchMark\">$suchtext</span>", $artikeltext);
echo "$artikeltext";
?>
Danke für jegliche Unterstützung, ich bin wirklich für jeden nur kleinsten Dankanstoss dankbar. Dieses Topic lesen so viele Leute, da gibts doch sicher noch welche, die gute Tipp parad haben?
Gruss
Sandra
tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono »

Hallo Sandra,

zuerst zum Problem mit der Gross- und kleinschreibung. Wenn Du PHP 5 einsetzt, ersetzte die Funktion str_replace durch str_ireplace, die achtet nämlich beim ersetzen nicht auf die Schreibweise.
Sonst musst Du auf ereg_replace zurückgreifen und zwar so:

Code: Alles auswählen

$regexp="/($suchtext)/i";
$artikeltext = ereg_replace($regexp, "<span class=\"sSearchMark\">$0</span>", $artikeltext);
Zum Suchen mit mehreren Wörtern ist die Lösung nicht ganz so einfach. Es reicht leider nicht aus das "%20" (was einfach eine URL-Schreibweise für Leerzeichen ist) durch ein "+" zu ersetzen. Du musst zusätzlich auf der Seite dafür sorgen, dass jedes Wort einzeln gesucht wird und nicht (wie im Moment) alle Wörter zusammen.

Konkret heißt das:

Wir gehen davon aus, dass der Nutzer alle Suchwörter durch Leerzeichen getrennt eingibt. Durch

Code: Alles auswählen

$suchtextearray=explode(" ", $suchtext);
wird dein Suchstring bei jeden Leerzeichen getrennt und die einzelnen Teile in ein Array von Strings geschrieben. Mit

Code: Alles auswählen

foreach($suchtextearray as $suchtext){
   $regexp="/($suchtext)/i";
   $artikeltext = ereg_replace($regexp, "<span class=\"sSearchMark\">$0</span>", $artikeltext);
}
wird die Ersetzung dann für jedes Suchwort einzeln gemacht.

Der Code ist nicht getestet, ich hoffe es funktioniert so.
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Beitrag von sandra07 »

Hallo tono

Vielen Dank für Deine Hilfe. Ich habe es mit der Ersetzung str_replace durch str_ireplace gemacht und es hat sich auch etwas geändert, aber leider nicht wie ich es mir gewünscht hätte.

Es zeigt mir nun wirklich alle Wörter an, die gross und klein geschrieben waren - nur im Text ändert er mir die nun in Klein, resp. Grossbuchstaben ab, das sieht aus, wie wenn Schreibfehler auf der Seite wären. Wenn ich z.B. nach "verein" suche wird aus "Verein" dann "verein" oder ich suche z.B. nach "Beitrag", dann wird aus "Mitgliederbeitrag" dann "MitgliederBeitrag" mit Highlight.

Nach stundenlangem rumprobieren, konnte ich das Gross- und Kleinschreibe-Problem so lösen:

Code: Alles auswählen

<?php
$artikeltext = "CMS_HTML[1]";
$suchtext = "$_GET[suchtext]";
$suchtext = strtolower($suchtext);
$artikeltext = str_replace("$suchtext", "<span class=\"sSearchMark\">$suchtext</span>", $artikeltext);
$suchtext = ucwords($suchtext);
$artikeltext = str_replace("$suchtext", "<span class=\"sSearchMark\">$suchtext</span>", $artikeltext);
echo "$artikeltext";
?>
Betreffend Suchen mehrerer Wörter ging nach Anpassung dann kein Highlight mehr. Ich habe kein Error aber auch kein Hightlight, nicht mal wenn ich das/die Wörter richtig geschrieben habe.

hmmmm..... :(
Gruss
Sandra
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Hallo tono,

ich klinke mich mal ein, weil mir (wenn mir nichts weiter ein-/auffaellt) tatsaechlich nur diese Gross-/Kleinschreibung bei meiner Suche fehlt. Ich habe leider kein PHP5, es kommt also nur deine obige Loesung in Frage. Folgendes Modul bewirkt bei mir leider nichts:

Code: Alles auswählen

<?php
if ($edit && empty($_REQUEST['edit'])) {
  // Edit-Mode
  echo "CMS_HTML[1]";
} else if (("CMS_HTML[1]" != "") && ("CMS_HTML[1]" != "&nbsp;")) {
	 $hol_das_suchwort = $_GET[suchwort];
         $suchbegriffe = explode(" ",$hol_das_suchwort);
         $einlesen = "CMS_HTML[1]";
         foreach ($suchbegriffe as $suchbegriff)
	 {
         $regexp = "/($suchbegriff)/i";
         $einlesen = ereg_replace($regexp, "<span class=\"suche\">$0</span>", $einlesen);
         }
        echo $einlesen;
}
?>
Weil mir nicht klar war, was dieses $0 darstellt :oops:, habe ich es auch mal durch $regexp bzw. $suchbegriff ersetzt, aber alle drei Varianten haben nichts bewirkt, da ist nichts von <span> in der Ausgabe zu sehen. :( Hast du eine andere Idee?

Gruss
Christa
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Gross- Kleinschreibung

Beitrag von sandra07 »

hallo halchteranerin

Das Gross- und Kleinschreibe-Problem konnte ich lösen. Es geht mit verschiedenen Suchmodulen, die ich bereits ausprobiert habe.

Diesen Code im Textausgabe Modul "Text(HTML)"

Code: Alles auswählen

<?php echo "CMS_HTML[1]"; ?>
ersetzen durch diesen:

Code: Alles auswählen

<?php 
$artikeltext = "CMS_HTML[1]"; 
$suchtext = "$_GET[suchtext]"; 
$suchtext = strtolower($suchtext); 
$artikeltext = str_replace("$suchtext", "<span class=\"sSearchMark\">$suchtext</span>", $artikeltext); 
$suchtext = ucwords($suchtext); 
$artikeltext = str_replace("$suchtext", "<span class=\"sSearchMark\">$suchtext</span>", $artikeltext); 
echo "$artikeltext"; 
?>
Ich hoffe es hilft dir weiter....

aber das Problem von mehreren Suchwörtern das steht leider immer noch! :cry:
Gruss
Sandra
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Hallo Sandra,

deine Loesung hatte ich schon gesehen, danke :), aber ich hatte eben auch gelesen, dass du ein Problem hast, wenn man mehrere Suchbegriffe eingibt. tonos Loesungsvorschlag sollte damit kein Problem haben, wenn ich ihn denn umsetzen kann. Aber bisher klappt das leider nicht. :(

Gruss
Christa
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Beitrag von sandra07 »

Stimmt, bei mir geht es auch nicht.

Vielleicht klinkt sich nochmals jemand ein, der uns weiterhelfen kann? :lol:
Gruss
Sandra
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Sandra, ich hab's hinbekommen! Ich werde gleich die komplette Loesung hier unter Module 4.4.x veroeffentlichen.

Gruss
Christa

EDIT: Mist, zu frueh gefreut! Die Suchergebnisseite sieht so aus, wie ich sie haben will, aber die anderen Seiten. :shock: :roll: Ich glaube, ich muss noch etwas basteln. :evil:
Gesperrt