Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nach ähnlichen Schreibweisen suchen (https://www.delphipraxis.net/1959-nach-aehnlichen-schreibweisen-suchen.html)

Kuckuckskind 1. Jan 2003 04:05


Nach ähnlichen Schreibweisen suchen
 
Hallo,

wie ich mit Parametern suchen kann, ist j aklar, aber kann ich es automatisch bei Paradix so einstellen, dass auch ähnliche Schreibweisen gefunden werden können?
Wenn ich z.B. nach dem Namen "Mayer" suche, auch die Namen "Maier", "Meyer", "Mayre", "Bayer" etc. ausgegeben werden. Einzige Bedingung: Die Begriffe dürfen sich nur durch maximal zwei Buchstaben unterscheiden.

Luckie 1. Jan 2003 04:36

Gibt es bei SQL nicht sowas wie LIKE? Ich weiß es nicht, ich habe noch nie was mit SQL gemacht und das ist mein e3rstes Posting in der DB-Sparte. :P

Brüggendiek 1. Jan 2003 05:00

Hallo!

Bei ähnlichen Suchbegriffen fällt natürlich als Erstes wieder mal der Begiff "Fuzzy".

Außerdem gibt es speziell für Namen noch die Phonemische Umwandlung. Da wird dann z.b. Y zu I, AI zu EI, ER zu R und an bestimmten Stellen verschwindet H. Beispiele:
Maier
Mayer
Meier
Meyer
Meihar
Mayr
werden alle zu MEIR

Allerdings: da sind mehr als 2 Unterschiede möglich und Bayer paßt da nicht rein!

Anwendung: Beim Erfassen den Namen in Phonem-Schreibweise umwandeln, als zusätzliches Datenfeld speichern. Beim Suchen die Eingabe in Phonem umwandeln und mit dem zusätzlichen Feld vergleichen. Gleich: Name ist eine Schreibweise des Suchbegriffs.

Das Ganze dürfte aber recht aufwendig werden.

Gruß

Dietmar Brüggendiek

xbu58 1. Jan 2003 08:56

Hallo Thea

Das Problem mit ähnlichen Begriffen ist in den meisten DB-Servern mit der System-Funktion SOUNDEX gelöst worden. Die Frage ist aber, ob Paradox das auch kann. Du kannst einmal folgendes versuchen:
Code:
SELECT * FROM autoren FROM SOUNDEX(Nachname) = SOUNDEX('Maier')
Das funktioniert auf SQL-Server und SQL-Anywhere. Aber Paradox..... :(

Gruss
Xaver

MrSpock 1. Jan 2003 13:17

Hallo Kuckuckskind,

Paradox kennt nur LocalSQL. Da gibt es leider keinen LIKE Operator und keine SOUNDEX Funktion. Auch hier hilft nur die manuelle Suche. Du benötigst also eine Funktion, die ähnliche Strings findet und nutzt diese in einer Schleife. hier gibt es z.B. eine Funktion "Like", die die Aufgabe erfüllen könnte. Google doch mal mit "Delphi +like +Strings", da findest du bestimmt was.

xbu58 1. Jan 2003 13:38

Hallo MrSpock

Leider liegst Du mit der Aussage, dass Paradox LIKE nicht kennt falsch. Paradox kennt sehr wohl LIKE. Kuckuckskind verwendet diesen Operator ja schon mit erfolg! Es ist also auch möglich, dass SOUNDEX funktioniert. Ich weiss es aber eben nicht. Also zuerst einmal versuchen. :mrgreen:

LIKE kann aber in keinem SQL-Dialekt, den ich kenne, eine Ähnlich-Funktion erfüllen. Es ist also eine Soundex-Methode dafür nötig. Das Problem liegt aber darin, dass Soundex aus naheliegenden Gründen keine LIKE-Wildcard enthalten kann. Es ist also nicht möglich nach %Maier% mit SOUNDEX zu suchen.

Wenn Paradox SOUNDEX nicht unterstützt, so gibt es noch eine weitere Möglichkeit. Man kann zum Beispiel für alle Felder, in welchen man nach Soundex suchen möchte ein zusätzliches Feld anlegen, in dem man den Soundex-Wert manuell speichert. Es gibt übrigens eine Freeware-Komponente unter:
http://www.torry.net/
Ich bin aber nicht sicher, ob diese korrekte Resultate für Deutsch liefert.

Gruss
Xaver

MrSpock 1. Jan 2003 14:15

Hallo xbu58,

tja, so kann man sich irren. Ich hab nur schnell in der OH nachgeschaut und dort LIKE bei Local SQL nicht gefunden. Dann hab ich noch kurz den DB-Explorer von Delphi geöffnet und eine Abfrage auf eine Paradoxtabelle formuliert, die den LIKE Operator benutzt. Der Explorer hat gemeldet, "unbekanntes Schlüsselwort LIKE". Daher hatte ich angenommen, dass LIKE nicht in lokal SQL unterstützt wird. Ich probier es nachher noch einmal aus.

xbu58 1. Jan 2003 14:42

Hallo MrSpock

Wie Du wahrscheinlich gemerkt hast, arbeite ich selber nicht mit Paradox sondern mit SQL-Server und SQLAnywhere. Ich kann als nicht sagen, warum es bei Kuckuckskind geht und bei Dir nicht. Ev. arbeitet Kuckuckskind über einen ODBC-Treiber mit Paradox.
Das wäre gar nicht so schlecht, da man damit eine gewisse Unabhängigkeit von Paradox erreichen würde.
Als probiere mal, ob Du es wirklich nicht hinkriegst. :coder: Würde mich auch interessieren. Muss ja schlieslich auch meinen Horizont erweitern.

Gruss
Xaver

Übrigens: Wie definiert sich der geistige Horizont? Nun ganz einfach. Es ist der Abstand zwischen Kopf und Brett multipliziert mit dem proximativ errechneten Wert des sozialen Niveaus. :?

Kuckuckskind 2. Jan 2003 01:42

Zitat:

Zitat von xbu58
Ev. arbeitet Kuckuckskind über einen ODBC-Treiber mit Paradox.

Hä???

Warum muss ich eigentlich Pradox benutzen, wenn Paradox doch nix kann... kann ich nicht noch im Nachhinein wechseln?

xbu58 2. Jan 2003 07:29

Hallo Thea

Also es gibt natürlich einige Gründe die für Paradox sprechen. (Ich selber neige eher dazu zu sagen, dass es zuviele Gründe gibt, die gegen Paradox sprechen.) Ich denke einer der wichtigsten Gründe für Paradox ist, dass keine Installation eines DB-Server nötig ist. Dann ist da sicher auch noch der Preis, wobei sich dies relativiert, wenn man in Betracht zieht, dass mySQL ein Freeware-DBServer ist und deshalb ebenfalls nichts kostet.

Nun zur Frage, ob man das im Nachhinein wechseln kann. Grundsätzlich ist das immer möglich. Es gibt aber sicher einige Abklärungen, welche gemacht werden müssen.

1. Der SQL-Dialekt von Paradox. Da sollte es aber keine Schwierigkeiten geben, da Paradox nur ein Subset der Befehle von SQL-92 unterstützt. Die meisten Datenbank-Server, welche heute auf dem Markt sind unterstützen aber SQL-92 vollständig.

2. Eine weiter Einschränkung liegt in der BDE, welche Du für Paradox benötigst. Meiner Meinung sollte man heute diese nicht mehr einsetzen. Mit den ADO-Komponenten von Windows ist man sicher besser bedient.

Es gibt wahrscheinlich noch einige Punkte mehr, welche man ansehen sollte. Meine Erfahrung mit dem Wechseln von einer Datenbank zur andersn ist aber, dass der Teufel meistens im Detail liegt. So wollte ich vor zwei Monaten eine Umstellung von SQL-Server auf Caché-Server machen. Die hat am Anfang sehr einfach ausgesehen, bis ich feststellen musste, dass bestimmte SQL-Strukturen (wie z.B. DECLARE in SQL-Scripts oder temporäre Tabellen auf dem Server) von Caché nicht unterstützt werden.

Gruss
Xaver


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz