php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.03.2005, 19:27  
Gast
 
Beiträge: n/a
Standard Ähnlichkeiten finden

Hallo Leute,
für das gemeinnützige Projekt http://www.kosmolingua.de (Wörterbuch von 200+ Sprachen in 200+ Sprachen möchte ich gerne auch ähnliche Wörter zeigen. Also wenn der Nutzer eintippt lofe (statt love) sollte "Meinten Sie: love" gezeigt werden.

Ich hab mit soundex schon rumexperimentiert, aber bin zu keinem vernünftigen Ergebnis gekommen.

Mir ist bekannt, dass es in php Möglichkeiten gibt 2 strings mit einander zu vergleichen. Hier müsste ich aber (das Wortverzeichnis hat pro Sprache zur Zeit 15.000 Vokabel) jede einzelne Zeile der DB auslesen und vergleichen.

Habt Ihr vielleicht ein paar Ideen, wie ich das anstellen kann, ohne jede Zeile in der Datenbank mit dem eingegebenen Suchbegriff vergleichen zu müssen?

Merci für Eure Anregungen,
Grüße
Jo
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.03.2005, 22:14  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du das ganze zur laufzeit machen willst, kannst du das so ziemlich vergessen.
php ist für kleinere datenmengen schon recht gut zu haben, aber strinvergleiche über 15.000 + wörter sind zwar machbar, aber nicht performant genug.
ich bezweifle auch, dass es überhaupt eine möglichkeit gibt, soche heuristischen analysen zur laufzeit anzustellen. das ganze liegt wohl auch an der NP-vollständigkeit menschlicher sprache.

eines der zauberworte heißt stemming - das funktioniert für fast jede sprache. damit kannst du schonmal 'gehen' und 'geht' oder 'springen' und 'springt' gemeinsam nutzen. das ganze funktioniert allerdings auch nicht zur laufzeit, sondern wird zur erstellung einer oder mehrerer index-tabellen verwendet, und erst die index-tabellen werden zur laufzeit durchsucht.

praktikable lösung:
lege eine datenbanktabelle mit 'falsches wort' -> 'vermutlich gemeintes wort' an, und verwende wordstemming und diverse andere methoden, um diese tabelle zu füllen.
das suchen in so einer (dann auch korrekt indizierten) tabelle ist dann auch performant genug.
axo ist offline   Mit Zitat antworten
Alt 04.03.2005, 08:32  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Moin,

lege doch neben der Spalte "Wort" noch eine Spalte "SoundEx" an und speichere dort diesen zum Wort passenden. Und dann machst Du 2 Abfragen, eine sucht die genaue Entsprechung und die zweite in der Spalte mit den Soundexen... ich weiß ja nicht, was genau du damit experimentiert hast.
Ach ja, Indizierung nicht vergessen, dann ist es auch kein Table scan.
__________________
Cheers, Marco
marsch ist offline   Mit Zitat antworten
Alt 10.03.2005, 19:00  
Gast
 
Beiträge: n/a
Standard

Hey danke für die Anregungen, das ist total klasse!

Ich habe nun folgendes gemacht (weil bei 200 Sprachen das irgendwie ein RIESEN Aufwand wäre für jede Datenbank eine "Vergleichstabelle" anzulegen) - Ich schummle etwas mit soundex in Kombination mit metaphone. Funzt zwar nicht 100% bei allen Sprachen, aber zumindest bei den Romanischen Sprachen zu 60% (das Eine oder Andere absolut unsinnvolle Wort ist noch dabei, aber naja das ist eben Künstlerpech *lol*)


Nochmals vielen Dank, Ihr habt mir sehr geholfen!

Grüße
Jo
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ähnlichkeiten finden, datenbank ähnlichkeiten, suchbegriffe ähnlichkeiten finden, php, ähnlichkeiten php, ähnlichkeiten suchen php, erkennung von wort ähnlichkeiten php, php daten aus tabelle vergleichen ähnlichkeiten finden, php ähnlichkeiten finden, ähnlichkeiten suchen, php ähnliche wörter finden

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.