| Zitat: |
| mit SQL alleine wirst du das in dem Fall nicht so einfach hinkriegen. Man könnte die Tabellen jeweils um eine Spalte ergänzen in der ein phonetischer Wert der Artikelbeschreibung (SoundEx) festgehalten wird und anhand dieser Codes die Artikel suchen. |
Also extra Spalte fällt leider aus diversen Gründen erstmal raus, wäre sicherlich die Beste Lösung... Und was hat das mit SoundEx aufsich? Mir ist dieser Begriff irgendwo schoneinmal untergekommen...
| Zitat: |
| Warum willst Du denn das längste Wort suchen Je länger, um so mehr Tipppppfehler. Bei meinem Beispiel würde auch das hier gefunden : "schreiber blau" |
Bei mir läuft das ja anders ab, ich suche NICHT nach den User-Eingaben, sonder will praktisch "Quer-Verknüpfen", so wie LCS es eben auch gerade festgestellt hat.
Nochmal zu meinem Beispiel:
Ich hab eine Datenbank, die umfasst sämtliche MEINE artikel, die ich im Lager habe.
Ich hab eine zweite Datenbank, die umfasst sämtliche Artikel von Lieferanten, die ich irgendwann schon mal bestellt habe.
Wenn ich nun in meiner eigen Datenbank bin, und sehe: "Aha, Kugelschreiber sind alle!" Dann will ich auf einen Button drücken, der meine Lieferanten-Datenbank öffnet, und dort ALLE kugelschreiber anzeigt, von jedem Lieferanten, jeder Form und jeder Art!
Nun ist also die Frage:
Ist der Hauptsuchbegriff, also der primäre Bezeichner für meine Artikel, in meinem Datenbankfeld...
... immer der längste String?
... immer der erste String?
... immer der String ohne irgendwelche Zahlen oder Zeichen drinn?
Oder sollte ich folgendermaßen vorgehen:
Teile das Datenbank-Feld in 'n' Strings auf, jeder dieser Strings enthält einen zusammenhängenden String des Feldes. (rein technisch gesehen möglich)
Durchsuche die Datenbanke jetzt jeweils einmal nach diesen Strings, merke dir wie groß jeweils die ErgebnissMenge war, und gehe davon aus, das der Suchstring, der die KLEINSTE ErgebnissMenge zurückgeliefert hat, der richtige respektive hier relevante Suchstring ist.
Also:
Mein Feld in der DB enthält: "kugelschreiber blau 15cm ohne Clip"
Diese Feld verteile ich auf 5 Strings:
1: kugelschreiber
2: blau
3: 15cm
4: ohne
5: clip
Jetzt filtere ich die DB nach 1, 2, 3 usw. und merke mir per RecordCount jeweils die zurückgeliefert Größe.
Es ist leicht zu erkennen, welcher String am wenigsten Werte zurückliefert, und zwar 1, gefolgt warscheinlich von 5 und dann der rest.
In diesem Fall dürfte diese Methode warscheinlich zum Erfolg führen, wennoch sie sehr langsam in der Ausführung wäre, möcht ich meinen...
was meint ihr dazu?
PS: kann nochmal einer das mit dem SoundX näher erläutern, oder einen AnhaltsPunkt geben, wonach ich googeln oder in der Delphi-Hilfe suchen kann?