Gute Morgen, ich durchforste die SQLalchemy und Postgresql Dokumentationen nach einer Möglichkeit, wie man Informationen über die Genauigkeit eines Suchergebnisses erhalten kann, aber mich beschleicht der Verdacht, dass mir die Datenbank diese Information gar nicht liefern kann. Bevor ich also noch ein paar Stunden sinnlos vergeude frage ich lieber mal.
Wenn ich mit SQLAlchemy eine Anfrage mit .like() durchführe bekomme ich ja nicht unbedingt einen exakten Treffer. Kann mir die Datenbank/SQLAlchemy Informationen darüber liefern, wie exakt ein Suchergebnis mit dem Suchbegriff übereinstimmt? Ich mache keine Volltextsuche sondern eine Stichwortsuche.
Genauigkeit von Suchergebnissen ermitteln
Ich bin bei Postgresql über Ranking gestolpert. Aber so richtig bringt mich das nicht weiter, zumindest, wenn ich es richtig verstanden hab.
Da muss ich wohl selbst ran.
Da muss ich wohl selbst ran.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
- Käptn Haddock
- User
- Beiträge: 169
- Registriert: Freitag 24. März 2006, 14:27
Mir fällt grad der Name nicht ein, aber in den Postgres-Extensions gibts afair ein Tool, das die Buchstabenvertauschungen zwischen den beiden Begriffen zählt und so ein Maß für die Genauigkeit bildet. Mußt mal in der Postgres- Doku (Anhang F;)) schauen, da sollte das drin stehen.
Gruß Uwe
Gruß Uwe
---------------------------------
have a lot of fun!
have a lot of fun!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
@Käptn Haddock: Meinst du fuzzymatchstr?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Käptn Haddock
- User
- Beiträge: 169
- Registriert: Freitag 24. März 2006, 14:27
Genau. Habs auch grad gefunden. Die Levenshtein-Distance könnte hier hilfreich sein.Leonidas hat geschrieben:@Käptn Haddock: Meinst du fuzzymatchstr?
Gruß Uwe
---------------------------------
have a lot of fun!
have a lot of fun!
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,

Was ist denn der Hintergrund der Frage?
Gruß, noisefloor
Darum sucht man doch mit 'LIKE', eben um nicht exakt zu suchen.Wenn ich mit SQLAlchemy eine Anfrage mit .like() durchführe bekomme ich ja nicht unbedingt einen exakten Treffer.

Was ist denn der Hintergrund der Frage?
Gruß, noisefloor
Naja, ich möchte wissen, wie weit die gefundenen Treffer vom Suchbegriff abweichen. Wenn ich nach 12 suche und eine 12 finde ist das ein besserer Treffer als wenn ich eine 128 oder 1280 finde. Wenn ich nach ABC suche ist ABCD besser als ABCDEF usw
Es soll also weniger wie bei soundex ein "klingt ähnlich" sein sondern ein "der gefundene Treffer entspricht *exakt* dem Suchbegriff" oder "der gefundene Treffer enthält den Suchbegriff plus x andere Zeichen"
Es soll also weniger wie bei soundex ein "klingt ähnlich" sein sondern ein "der gefundene Treffer entspricht *exakt* dem Suchbegriff" oder "der gefundene Treffer enthält den Suchbegriff plus x andere Zeichen"
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
axo. Also quasi eine "Qualitätsbewertung" der Suchergebnisse. Frag' doch mal bei Google nach deren Ranking-Algorithmus.
Gruß, noisefloor
axo. Also quasi eine "Qualitätsbewertung" der Suchergebnisse. Frag' doch mal bei Google nach deren Ranking-Algorithmus.

Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Genau dazu hatte Käptn Haddock ja etwas geschrieben:burli hat geschrieben: Es soll also weniger wie bei soundex ein "klingt ähnlich" sein sondern ein "der gefundene Treffer entspricht *exakt* dem Suchbegriff" oder "der gefundene Treffer enthält den Suchbegriff plus x andere Zeichen"
http://en.wikipedia.org/wiki/Levenshtein_distance
@niosefloor: google arbeitet primär mit dem PageRank Algorithmus (http://en.wikipedia.org/wiki/PageRank). Das ist ein Algo, der auf Graphen basiert (Seiten = Knoten, Hyperlinks = (gerichtete) Kanten) und somit nicht für Ähnlichkeit von Strings zu gebrauchen ist.
Das Hauptproblem dürfte nur sein, dass SQL so etwas nicht von Haus aus bietet. Allerdings kann man doch bei Postgres selber Funktionen erstellen, oder? Vielleicht hat ja da mal jemand eine Levenshtein-Funktion implementiert, die man dann direkt in SQL benutzen könnte.
Edit: Ok, hab grad gesehen, dass diese Funktion bereits existiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert