Wie programmiert man eine Kontext abhängige Suchfunktion?
Hallo,
ich bin derzeit dabei eine Suchfunktion in Python zu realisieren.
Das finden von Elementen funktioniert auch wunderbar wenn das exakte Wort in der Datenbank drin vorkommt. Wenn ich nach "Ring" suche bekomme ich auch alles was mit "Ring" zu tun hat angezeigt. Wenn ich jetzt aber nach "Ringe" such bekomme ich logischerweise kein Ergebnis. Das könnte man ja theoretisch mit einem Wörterbuch erschlagen welches Synonyme usw. beinhaltet.
Gibt es noch eine andere Möglichkeit ausser ein Wörterbuch?
Du mußt vor allem wissen, was Du eigentlich finden willst. Soll z.B. auch „Ringparabel“ oder „Goldringes“ gefunden werden? Was ist mit „Boxringen“?
Das ist ne gut Frage in wie weit man das ausweiten möchte.
Das ganze ist ne Suchfunktion für ein Lager. Der eine sucht nach "Rundbürste" und der andere nach "Flaschenbürste".
2 Antworten
Du könntest den Unterschied zu Elementen in der Datenbank mit der Levenshtein-Distance berechnen und unter einer gewissen Distanz das Ergebnis trotzdem vorschlagen.
Siehe YouTube, GitHub, etc. für "Inspiration"...
Wenn Du 'Ringe' 'stemmst' (Stemming - gelegentlich auch Normalisierung), wird daraus 'Ring'. Vorraussetzung ist natürlich, daß Dein Stemmer gescheit arbeitet. Und nein, Stemming ist keine leichte Aufgabe.
Daneben wird dann auch bei Ähnlichkeitssuche auf die Levenshtein-Distanz zurückgegriffen, die bereits erwänt wurde.
Übrigens, manche Datenbanken haben schon einiges an Funktionalität für (Volltext)suche an Board, sogar mit Lokalisierung etc. Hier lohnt sich ein Blick in die Dokumentation.