Fehlertolerante Suche | Fuzzy Search

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
MadSonic
Senior Member
Beiträge: 162
Registriert: Mo 12. Dez 2005, 14:37

Fehlertolerante Suche | Fuzzy Search

Beitragvon MadSonic » Mi 3. Mär 2010, 11:10

Ich versuche gerade eine fehlertolerante Suche zu konzipieren, bei der ähnliche Suchwörter aufgelistet werden sollen, falls die Suche ohne Treffer ist.
Prüfen ob die Suche ein Ergebnis liefert ist an sich ja kein Problem, aber wie könnte ich die Vorschläge generieren lassen?

Habt ihr eine Idee? Scheinbar finden nachfolgende PHP Funktionen bei einer fuzzy-Suche Verwendung:

soundex() - Gibt den Soundex-Schlüssel als Zeichenkette zurück.
levenshtein() - Berechnet die Levenshtein-Distanz zwischen zwei Strings
metaphone() - Berechnet den Metaphone-Schlüssel eines Strings
similar_text() - Berechnet die Ähnlichkeit zweier Zeichenketten

Wie könnte man sowas mit der Suchtabelle von we umsetzen?
LG Fatih

Sophia
Member
Beiträge: 62
Registriert: Mo 4. Mai 2009, 22:56

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon Sophia » Do 4. Mär 2010, 01:29

Für den Anfang würde ich mir eine komplette Wortliste (keine doppelten) aus den relevanten DB-Feldern ziehen (auch nur die Wörter mit mindestens 3 Buchstaben), den Suchbegriff per levenshtein vergleichen (beides lowercase) und die Suche bei Distanz= 1 abbrechen. Die Wortliste eventuell vorsortiert nach Anzahl der Buchstaben und nur plusminus 2 vergleichen.
Du kannst ja probieren, ob du mit einem Array für die Wortliste auskommst, falls nicht, dann würde ich die Wortliste auf mehrere Textfiles verteilen (z.b. wortlänge) . Bei einer großen Datenmenge wird das aber wohl nicht ausreichen. Wie man das jetzt aber sinnvoll mit Hashing kombiniert, fällt mir spontan auch nicht ein. Frage ist auch, wie oft diese Wortliste aktualisiert wird (evtl. über hooks oder update-Läufe)

LG Sophia

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon Dirk Einecke » Do 4. Mär 2010, 12:30

Hi,

was man auch machen kann ist den Webservice "Spelling Suggestion" von Yahoo einzubinden. Haben wir auf der webEdition-Website gemacht:

http://www.webedition.de/de/Suche.php?w ... t_search=1

Dirk

Benutzeravatar
MadSonic
Senior Member
Beiträge: 162
Registriert: Mo 12. Dez 2005, 14:37

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon MadSonic » Do 4. Mär 2010, 12:58

@Sophia
Die deutsche Sprache ist bei soundex wohl nicht so optimal, die Kölner Phonetik muss da herhalten
http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik

@ Dirk
Das ist natürlich sehr lässig :)
War das nicht auch irgendwo dokumentiert? Ich glaubte ähnliches mal in der Doku mit google gesehen zu haben, konnte es aber nicht wieder finden. Dumm nur, dass man hier auch auf Javascript angewiesen ist... Aber besser als gar keine Phonetik!
Wäre das nicht auch noch mit Echtzeitvorschlägen für das Formularfeld kombinierbar?
Hast du da irgendwo ein Template zur Einsicht wie das aufgebaut ist?

Edit: Das hab ich von dir gefunden, mittlerweile scheint es ja auch in deutsch zu gehen :) http://we-devedge.info/samples/?we_objectID=1248.
Magst du das irgendwann aktualisieren oder ist die Seite "geparkt"?
LG Fatih

Benutzeravatar
MadSonic
Senior Member
Beiträge: 162
Registriert: Mo 12. Dez 2005, 14:37

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon MadSonic » Do 4. Mär 2010, 13:25

Langfristig halte ich diese Phonetische Suchsache für sehr sinnvoll, evtl. stell ich das mal mit den errungenen Infos als Featurewunsch bei Mantis rein.

Bei typo3 und drupal kann man sich sicher was abschauen
http://drupal.org/node/247482
LG Fatih

Sophia
Member
Beiträge: 62
Registriert: Mo 4. Mai 2009, 22:56

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon Sophia » Do 4. Mär 2010, 14:35

Bei Eigennamen ist eine phonetische Suche bestimmt super,Wenn es um Verschreiben (Buchstaben vertauschen, verdoppeln, auslassen) normaler Wörter geht, weiß ich nicht. (Wollte übrigens nicht soundex, sondern levensthein nehmen). Kommt alles auf den Einsatzzweck und die Datenmenge an.
LG Sophia

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Re: Fehlertolerante Suche | Fuzzy Search

Beitragvon Dirk Einecke » Do 4. Mär 2010, 17:57

Hi,
Dumm nur, dass man hier auch auf Javascript angewiesen ist...
Also JS brauch man dazu nicht .. kann alles serverseitig erledigt werden.
Edit: Das hab ich von dir gefunden, mittlerweile scheint es ja auch in deutsch zu gehen :) http://we-devedge.info/samples/?we_objectID=1248.
Magst du das irgendwann aktualisieren oder ist die Seite "geparkt"?
Der Inhalt soll ja vollständig in die webEdition-Dokumentation umziehen ... wenn ich dann bei diesem Beispiel bin, wird es aktualisiert.

Dirk


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 16 Gäste