Ordwildseek
Moderator: Moderatoren
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Ordwildseek
Gibt es irgendeine Möglichkeit Ordwildseek mit dem ADS zu nutzen ?
Hintergund: bei eingehender Telefonnummer suche ich mit ordwildseek("*"+cSuch+"*") in meinem Telefonnummernfeld.
Hintergund: bei eingehender Telefonnummer suche ich mit ordwildseek("*"+cSuch+"*") in meinem Telefonnummernfeld.
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Ordwildseek
Ich habe nie OrdWildSeek benutzt und bin mir nicht sicher, ob ich richtig verstehe was es macht. Ich vermute aber, dass du mithilfe des Full Text Search Index weiterkommst. Damit kann man rasend schnell nach Woertern oder Teilen suchen.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Ordwildseek
ich glaube das meint Wolfgang. Und das dürfte sicherlich ein besserer Weg sein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Ordwildseek
OrdWildSeek() wird von der ADSDBE nicht unterstützt. Das ist auch genau die Meldung, die Du bekommst, wenn Du es versuchst.
Herzlich,
Tom
Tom
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
- Schubi
- Rekursionen-Architekt
- Beiträge: 139
- Registriert: Mi, 05. Okt 2005 15:10
- Wohnort: Wiesloch
- Hat sich bedankt: 5 Mal
Re: Ordwildseek
Hallo Manfred,
suche mal in der ADS Hilfe nach "FTS Quick Start" oder nach "Full Text Search".
Da findest du alles.
Im Prinzip musst du für jedes zu durchsuchende Textfeld mit CREATE INDEX ... einen Volltext-Index erstellen.
Danach suchst du mit SELECT ... WHERE Contains(*, 'suchstring') oder SELECT ... WHERE Contains(<feldname>, 'suchstring')
Hinweis: Wenn du z.B. nur nach Telefonnummern suchen willst, kannst du den Index auch gleich auf nur Ziffern ('0123456789') eingrenzen.
suche mal in der ADS Hilfe nach "FTS Quick Start" oder nach "Full Text Search".
Da findest du alles.
Im Prinzip musst du für jedes zu durchsuchende Textfeld mit CREATE INDEX ... einen Volltext-Index erstellen.
Danach suchst du mit SELECT ... WHERE Contains(*, 'suchstring') oder SELECT ... WHERE Contains(<feldname>, 'suchstring')
Hinweis: Wenn du z.B. nur nach Telefonnummern suchen willst, kannst du den Index auch gleich auf nur Ziffern ('0123456789') eingrenzen.
Grüße Steffen
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Ordwildseek
Hallo Steffen,
danke für die Infos, bin zwar Wolfgang aber ich denke die Antwort war auch für mich
danke für die Infos, bin zwar Wolfgang aber ich denke die Antwort war auch für mich
Viele Grüße
Wolfgang
Wolfgang
- nightcrawler
- 1000 working lines a day
- Beiträge: 651
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 96 Mal
- Kontaktdaten:
Re: Ordwildseek
Falls Du kein SQL und keinen zusätzlichen Index willst (kann bei unscharfer Suche mit fehlenden Anfangszeichen eh nicht eingesetzt werden), kannst Du auch einen Filter setzen (einfach mal im Data Architect testen):
Code: Alles auswählen
contains(telefon,"*7032*")
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Ordwildseek
Danke Joachim, das scheint zu klappen.
Da das meine ersten Versuche mit dem ADS sind, muss ich beim Setzen des Filters etwas beachten, damit der auf dem ADS ausgeführt wird - ansonsten sind Filter ja immer sehr langsam ?
Da das meine ersten Versuche mit dem ADS sind, muss ich beim Setzen des Filters etwas beachten, damit der auf dem ADS ausgeführt wird - ansonsten sind Filter ja immer sehr langsam ?
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Ordwildseek
Hallo Wolfgang,
der Filter muß so angegeben werden, dass der Ausdruck vom ADS ausgewertet werden kann.
Z.B. kann nicht ausgewertet werden, währendvom ADS ausgewertet wird und im allgemeinen sehr schnell ist. Der ADS verwendet dabei -falls möglich und vorhanden- Indizes zum Auswerten der Filter. Besonders interessant ist dies, wenn man so in einem MEMO-Feld suchen möchte.
Uli
der Filter muß so angegeben werden, dass der Ausdruck vom ADS ausgewertet werden kann.
Z.B.
Code: Alles auswählen
I := 5
MeineTabelle->( DbSetFilter( {|Nummer=I|} ) )
Code: Alles auswählen
I := 5
cbFilter := "{||Nummer="+str(I)+"}"
bFilter := &cbFilter
MeineTabelle->( DbSetFilter( bFilter ) )
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Ordwildseek
Der ADS dokumentiert in den Logs (ADS_ERR.ADT), wenn Filterbedingungen nicht vom ADS evaluiert werden können und deshalb lokal ausgewertet werden. Die dazugehörige Fehlerklasse beginnt mit "3"; Fehler 3111 beispielsweise verweist auf Speichervariablen, die vom ADS nicht verstanden werden können. Die Anwendung läuft trotzdem, und auch der Filter funktioniert, aber er könnte deutlich besser funktionieren, wenn der ADS alles verstehen würde - in diesem Fall gäbe es kein Fallback auf die lokale Auswertung. Ulis Beispiel zeigt, wie man aus der Speichervariablen einen konstanten Wert macht, den der ADS interpretieren kann. Wenn man einfach mal alle kritischen Funktionen nacheinander aufruft und dann die ADS_ERR.ADT auswertet, findet man schnell die neuralgischen Punkte.
Herzlich,
Tom
Tom