Zur Navigation

relevandte beiträge

1 YuryR

man sieht es in vielen foren ganz unten...
oder in onlinemagazinen

unter dem eigentlichen beitrag findet man öfter links zu "ähnliche temen" oder wie es heist...

wie geht so etwas zu realisieren?

also mir ist schon klar das es irgendwie über die sql suche erfolgen soll


nur jetzt beispiel:

ich veröffentliche auf meiner angelseite eine newsschlagzeile des tages unter dem title
"homingberger geparden forelle - fische nun auch in suchmaschinen"

wie lasse ich mir da unten die beiträge anzeigen in dennen die "forelle" vorkommt.. ABER NICHT "fische" (weil das steht ja z.b. in jedem beitrag)

es muss also schon eine "inteligente" suche sein..

22.05.2006 00:03

2 Jörg Kruse

wie lasse ich mir da unten die beiträge anzeigen in dennen die "forelle" vorkommt.. ABER NICHT "fische" (weil das steht ja z.b. in jedem beitrag)

Meinst du damit wirklich, dass nur nach Beiträgen gesucht wird, die das Wort "fische" nicht enthalten? Das könntest du z.B. mit folgender WHERE-Klausel bewerkstelligen:

SELECT * FROM beitraege WHERE beitragstext LIKE '%forelle%' AND beitrag NOT LIKE '%fische%' LIMIT 5

Falls du mit obiger Ausage aber meinst, dass 'fische' und andere häufige Wörter nicht berücksichtigt werden sollen, würde sich vielleicht folgendes Vorgehen eignen:

1. das Erstellen Art Blacklist, d.h. eines Arrays mit häufig vorkomenden Wörtern

2. der Titel (z.B. "homingberger geparden forelle - fische nun auch in suchmaschinen") wird mithilfe von explode() (Trennzeiche Leerstelle) zerlegt, die Variablen in ein Such-Array gespeichert

3. die Variablen des Such-Arrays werden in einer Schleife mithilfe von in_array() mit der Blacklist abgeglichen. Wenn sie nicht darin vorkommen, werden sie in die WHERE-Klausel der SQL-Abfrage eingebaut

22.05.2006 08:20 | geändert: 22.05.2006 08:27

3 YuryR

alles klar..

idee verstanden :)

(habe das schon so gemeint mit mehreren stichwörtern die NICHT gefunden werden sollen..)

also die variante mit der blacklist..

22.05.2006 10:26

4 YuryR

so.. habe mich eben dran gesetzt und deine idee umgesetzt..

funktioniert 1a

$badwordarray=array('auch','over','euro','wird','geht','oder','unter');
$title_array_start=explode(" ",$row[title]);
$title_array_suchstr=array();
$wieviel=count($title_array_start);

for($xzaehler=0;$xzaehler<$wieviel;$xzaehler++){
	if ((strlen($title_array_start[$xzaehler]) > 3) && !in_array($title_array_start[$xzaehler],$badwordarray)){
		array_push($title_array_suchstr,$title_array_start[$xzaehler]);
	}
}
print_r($title_array_suchstr);

wie kann ich statt !in_array nen preg_match einbauen so das ich das badwordsarray noch mal casesensitiv checken kann ohne da jede mögliche schreibweise groß/klein aufzuführen?

!preg_match("/$title_array_start[$xzaehler]/i",$badwordarray)
geht nicht weil der 2ter parameter ein string sein soll und kein array.. :/

und irgendwie kann es ja so auch nicht 100% richtig sein

es kann ja nicht sein das ich beim veröffentlichen jeder news erstmal gucken muss ob mein badwordarray auch alles enthält was im title vorkommt und wozu nicht gesucht werden soll (siehe jetztziges array)

so ist es schon einfacher eine neue spalte in der newstabelle anzulegen und da immer einzelne kws aus dem title speichern die vorkommen MÜSSEN

27.05.2006 02:17 | geändert: 27.05.2006 02:26

5 Jörg Kruse

Für ein case-insensitives Durchsuchen des Titles könntest du auf diesen vorher noch strtolower() anwenden:

$title = strtolower($row[title]);
$badwordarray=array('auch','over','euro','wird','geht','oder','unter');
$title_array_start=explode(" ",$title);

so ist es schon einfacher eine neue spalte in der newstabelle anzulegen und da immer einzelne kws aus dem title speichern die vorkommen MÜSSEN

Ja, du könntest die klassischen Keywords definieren, und darauf durchsuchen lassen - das Verfahren bedeutet etwas mehr Aufwand, wäre dem automatisierten Durchsuchen des Titles aber sicher überlegen.

27.05.2006 09:58

6 YuryR

Zitat von "Jörg"
Für ein case-insensitives Durchsuchen des Titles könntest du auf diesen vorher noch strtolower()
danke für die nächste idee :)

aber die variante mit einer weiteren spalte hörst sich echt einfacher (stichwort badwordarray überprüfen + erweitern) an..

27.05.2006 12:19

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]