Seite 1 von 1

Genauigkeit von Suchergebnissen ermitteln

Verfasst: Mittwoch 19. Januar 2011, 10:06
von burli
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.

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Mittwoch 19. Januar 2011, 10:15
von BlackJack
@burli: Die Information bekommt man über normales SQL tatsächlich nicht.

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Mittwoch 19. Januar 2011, 10:34
von burli
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.

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Donnerstag 20. Januar 2011, 21:15
von Käptn Haddock
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

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Donnerstag 20. Januar 2011, 21:17
von Leonidas
@Käptn Haddock: Meinst du fuzzymatchstr?

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Donnerstag 20. Januar 2011, 21:33
von Käptn Haddock
Leonidas hat geschrieben:@Käptn Haddock: Meinst du fuzzymatchstr?
Genau. Habs auch grad gefunden. Die Levenshtein-Distance könnte hier hilfreich sein.

Gruß Uwe

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Freitag 21. Januar 2011, 08:00
von noisefloor
Hallo,
Wenn ich mit SQLAlchemy eine Anfrage mit .like() durchführe bekomme ich ja nicht unbedingt einen exakten Treffer.
Darum sucht man doch mit 'LIKE', eben um nicht exakt zu suchen. :-)

Was ist denn der Hintergrund der Frage?

Gruß, noisefloor

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Freitag 21. Januar 2011, 09:29
von burli
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"

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Freitag 21. Januar 2011, 10:15
von noisefloor
Hallo,

axo. Also quasi eine "Qualitätsbewertung" der Suchergebnisse. Frag' doch mal bei Google nach deren Ranking-Algorithmus. :D

Gruß, noisefloor

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Freitag 21. Januar 2011, 10:30
von Hyperion
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"
Genau dazu hatte Käptn Haddock ja etwas geschrieben:
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.

Re: Genauigkeit von Suchergebnissen ermitteln

Verfasst: Freitag 21. Januar 2011, 15:08
von burli
Ok, danke, ich werde mir das dann mal anschauen