#1 11. Juni 2007 verfeinerte Suche Hallo leute, wie kann ich eine verfeinerte suche bzw ein such vorschlag zurückgeben? z.B. man sucht einen user names gerd suche -> gerd findest und alles ist ok suche -> gred findet trotzdem gerd und gibt zurück: sie meinten wohl gerd in der db frage ich ja mit nickname like '%$suche%' wie kann ich es anstellen damit er mir trotz verschreiber jemanden findet. gruß blaah + Multi-Zitat Zitieren
#3 11. Juni 2007 AW: verfeinerte Suche cool danke, hab nich gewusst nach was ich suchen muss. http://de3.php.net/soundex prinzip habe ich verstanden. nur wäre es sinnvoller wenn ich das ganze innerhalb der mysql anweisung machen könnte. aber dazu habe ich noch jix gefunden. ansonsten müsste ich alle namen aus der db auslesen uns 1 nach dem anderen mit soundex vergleichen. habe hier was gefunden, für alle die es interessiert: PHP: $sql = SELECT * FROM TableName WHERE ( SOUNDEX ( TableField ) = SOUNDEX ( '.$suchwort.' )) '; + Multi-Zitat Zitieren
#4 12. Juni 2007 AW: verfeinerte Suche vllt genügt das ja schon für deine anforderungen -> link greetz //edit: jaja sorry habs überlesen stieinigt mich -.- + Multi-Zitat Zitieren
#5 12. Juni 2007 AW: verfeinerte Suche Er hat doch schon geschrieben, dass er bereits mit LIKE abfragt, ihm aber das nicht reicht und er deswegen etwas anderes sucht. Bitte vorher lesen und mal bitte im anderen Thread antworten. + Multi-Zitat Zitieren
#6 12. Juni 2007 AW: verfeinerte Suche Hm ok so geht es, aber überlegen wir mal die Datenbank hat 100.000 User. Jetz klingen 1.000 Usernamen fast gleich. Ich gebe ein: Cydoc (und will diesen namen haben). dann gibt der mit aber 1.000 namen aus, weil wer anders vllt crydoc hat oder cyloc und die Werte von SOUNDEX sind zufällig gleich. schon darf man suchen^^ Weil wenn ich mir angucke, dass "soundex("Euler") == soundex("Ellery"); // E460" sein soll...ich mein "Euler" hört sihc an wie "Ellery"? also für mich eindeutig nicht. .... Wenn du nur Schreibfehlern umgehen willst, könntest du ja die Buchstaben des Wortes untereinander tauschen, was wiederrum viel zu Resourcenfressend wäre. Beispiel: Jemand sucht nach: Cydoc Die Suche sucht nun nach 120 Namen (5!). Nun, das ganze kann man also auch vergessen. Was nun noch geht, wäre zu überprüfen, ob Buchstaben, die nebeneinander liegen auf der Tastatur, vertauscht wurden. (wie es bei gerd [gred] der Fall ist). Solche Schreibfehler sind ja auch die Häufigsten. Du musst also eine Liste von Buchstaben erstellen, die nebeneinander liegen. Einige kannst du auch rauslassen (zb [qw], [öä]), da die mit einer sehr hohen Wahrscheinlichkeit in keinem Namen vorkommen. Deine Array wird nicht groß sein. (Im Gegensatz zu den Überprüfungen der vorherigen Beispielen) Nun kannst du dein Suchstring nach zwei nebeneinanderliegenden Buchstaben durchsuchen und bei Fund den "zweiten Namen" abspeichern. Danach kannst du die DB durchsuchen. Ich könnte mir hier vorstellen, das eine durchschnittliche Überprüfung der Nebeneinander liegenden Buchstaben bei ca. 5-6 liegt. Dies ist doch recht klein im Gegensatz zu SOUNDEX [Nach meinen Vorstellungen, wie ich es oben nannte] Ich hoffe, dieser Beitrag hilft dir. Ich glaube nämlich, dass SOUNDEX viel zu Resourcenfressend ist, wenn man größere Mengen an Daten in einer DB hat und diese dann komplett durchsuchen lässt mit SOUNDEX. MfG Cydoc + Multi-Zitat Zitieren
#7 12. Juni 2007 AW: verfeinerte Suche für den algo aber schon... ein anderes problem: soundex("kristof") und soundex("christof") sind nicht gleich, denn erste stelle von soundex ist der anfangsbuchstabe, der zahlenwert dahinter ist wieder gleich... d.h.: der der eintippt muss zumindest den anfangsbuchstaben wissen... + Multi-Zitat Zitieren