Ordwildseek

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Ordwildseek

Beitrag von Wolfgang Ciriack »

Gibt es irgendeine Möglichkeit Ordwildseek mit dem ADS zu nutzen ?
Hintergund: bei eingehender Telefonnummer suche ich mit ordwildseek("*"+cSuch+"*") in meinem Telefonnummernfeld.
Viele Grüße
Wolfgang
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

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
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Ordwildseek

Beitrag von Manfred »

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!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Tom »

OrdWildSeek() wird von der ADSDBE nicht unterstützt. Das ist auch genau die Meldung, die Du bekommst, wenn Du es versuchst. :wink:
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Wolfgang Ciriack »

Ja Tom, deswegen frug ich :D
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Wolfgang Ciriack »

@Uli,
hast du da nähere Infos, wie man das benutzt ?
Viele Grüße
Wolfgang
Benutzeravatar
Schubi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 139
Registriert: Mi, 05. Okt 2005 15:10
Wohnort: Wiesloch
Hat sich bedankt: 5 Mal

Re: Ordwildseek

Beitrag von Schubi »

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.
Grüße Steffen
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Wolfgang Ciriack »

Hallo Steffen,
danke für die Infos, bin zwar Wolfgang aber ich denke die Antwort war auch für mich :D
Viele Grüße
Wolfgang
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von nightcrawler »

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*")
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Wolfgang Ciriack »

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 ?
Viele Grüße
Wolfgang
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

Hallo Wolfgang,

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|} ) )
kann nicht ausgewertet werden, während

Code: Alles auswählen

I := 5
cbFilter := "{||Nummer="+str(I)+"}"
bFilter  := &cbFilter
MeineTabelle->( DbSetFilter( bFilter ) )
vom 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
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Wolfgang Ciriack »

Danke Uli,
werd ich mal nächste Woche ein wenig testen.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ordwildseek

Beitrag von Tom »

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
Antworten