Domino 9 und frühere Versionen > ND8: Entwicklung

"Zwischen x und y" Suche

<< < (2/2)

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