Domino 9 und frühere Versionen > ND8: Entwicklung
"Zwischen x und y" Suche
Keydins:
Wie wäre es denn, bei der Anlage der 'von bis' Dokumente ein Feld (Mehrfachwerte) über eine Schleife zu befüllen, so dass alle Werte von-bis enthalten sind und dann die Ansicht mit allen von-bis Dokumenten durchsuchen und prüfen, ob in dem neuen Feld der gesuchte Wert x enthalten ist.
Gruß
Dirk
Peter Klett:
--- Zitat von: Keydins am 31.07.13 - 12:26:09 ---Wie wäre es denn, bei der Anlage der 'von bis' Dokumente ein Feld (Mehrfachwerte) über eine Schleife zu befüllen, so dass alle Werte von-bis enthalten sind und dann die Ansicht mit allen von-bis Dokumenten durchsuchen und prüfen, ob in dem neuen Feld der gesuchte Wert x enthalten ist.
Gruß
Dirk
--- Ende Zitat ---
Das würde ich lassen. Was passiert bei
von = 1
bis = 1000000
?
Oder es wird nach 23,5 gesucht?
Ich würde eindeutig Glombis Variante 2 bevorzugen ...
pram:
Alternativ:
Die Zahl von in einen Binärstring umwandeln und in der Ansicht sortieren
00010111 (=23)
01000110 (=70)
01010101 (=85)
Naive Methode: Den zu suchenden Wert ebenfalls nach binär umwandeln und dann erst ein Bit, dann zwei Bit, dann drei usw in den Lookup (und exactmatch = false) geben, bis kein Treffer mehr erfolgt.
Erfordert bei 8 Bit (0-255) auch 8 Lookups, bei 32 Bit eben 32
Etwas komplizierter: Intervallschachtelung
Suche nach 40 erfolgt dann wie Folgt:
00101000 (=40)
Step 1: Volle 8 bit suchen, 00101000 => kein Treffer
Step 2: Bitanzahl halbieren, 0010____ => kein Treffer
Step 3: Bitanzahl halbieren, 00______ => Treffer
Step 4: Bitanzahl halbieren aber anhängen, 001_____ => Kein Treffer
Der letzte Treffer ist dann das richtige Dokument
Wenn b die Bitlänge ist, dann sind immer n Schritte erforderlich, wobei sich n wie Folgt berechnet 2^(n-1) = b
Bei 32 Bit, wäre n=6
Weiteres Beispiel: Suche nach 73 = 01001001
Step 1: 01001001 => kein treffer
Step 2: 0100____ => Treffer
Step 3: 010010__ => kein Treffer
Step 4: 01001___ => kein Treffer
Gruß
Roland
tabama:
Danke!
Methode 2 von Andreas funktioniert wunderbar :)
Ich musste es nur ein wenig umbauen, weil der Suchstring nicht nur (wie in meinem Beispiel) aus einem Wert bestand. Es ging mir bei der Frage ja aber darum einen Ansatz zu finden. Denken will ich ja noch selbst ;)
Die Lösung von Roland (Binär) ist ja höchst mathematisch. Solange die o.g. Lösung einigermaßen performant ist, ist diese wesentlich einfacher.
Der Ansatz von Dirk (Mehrfachwerte) hatte ich bereits mal bei einem anderem Problem ausprobiert. Da meckert Notes aber von sich aus schon rum, wenn es zu viele Werte werden.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln