2012-02-16 10 views
8

We wszystkich referencjach dotyczących operatora filtru wyszukiwania LDAP znajduję <= dla "mniejszy lub równy" i >= dla "większy lub równy".Ścisłe mniej niż operator w filtrze wyszukiwania LDAP?

Czy naprawdę nie ma operatora "ściśle mniej niż"? Czy muszę napisać attribute < threshold jak poniżej? (Wartość progowa to stała wartość).

(&(attribute <= threshold)(!(attribute = threshold))) 

W moim obecnym przypadku wartościami atrybutów są liczby całkowite reprezentujące daty, np. 20120217161853 na 2012-02-17 16:18:53.

Odpowiedz

12

Innym prostym rozwiązaniem jest odwrócenie warunku. Jeśli potrzebujesz

(attribute < threshold) 

to może być również zapisane jako

!(attribute >= threshold) 
2

Nie wiem, czy naprawdę rozumiem. Jeśli chcesz coś takiego jak X<100, dlaczego nie kod X<=99.

+1

który powinien działać. Nie myślałem o tym, ponieważ dane wejściowe są ciągiem daty i czasu, ale gdy są przechowywane w LDAP, to wszystkie są po prostu liczbami całkowitymi. – Joni

+0

Który katalog używasz? – JPBlanc

+0

Katalog jest naszym klientem i uważam, że jest to Sun Directory Server, ale nie mamy do niego dostępu ... Na razie uruchamiamy nasze testy na 'Net :: LDAP :: Server :: Test', to jest Moduł Perla, który implementuje dostatecznie dużo serwera katalogów do testowania. – Joni

3

Skonsultuj się z RFC4511, aby uzyskać definicje typów filtrów wyszukiwania. Rodzaje filtrów to:

  • equalityMatch AttributeValueAssertion,
  • podciągi SubstringFilter
  • greaterOrEqual AttributeValueAssertion
  • lessOrEqual AttributeValueAssertion
  • obecny AttributeDescription
  • approxMatch AttributeValueAssertion
  • extensibleMatch MatchingRuleAssertion

Nie tylko nie ma „<” filtr, wartości względne w >= i <= są zdefiniowane zamawiając zasady, a więc co nie można się spodziewać co porównanie wartości względne, chyba treshold ma 1.3.6.1.4.1.1466.115.121.1.27 składni i ma integerOrderingMatch reguła zamawiania.

+0

Dzięki za referencję. W rzeczywistości "próg" jest wartością stałą, a nie innym atrybutem, przepraszam za brak jasności. Czy jednak regułą zamawiania musi być 'integerOrderingMatch'? – Joni

+0

Nie, tylko dla porównań całkowitych. Inne reguły porządkowania atrybutów mogą być leksykograficzne. Aplikacje muszą sprawdzać schemat, aby określić reguły kolejności, reguły dopasowania i składni atrybutu. Identyfikatory obiektów używane w schemacie są zdefiniowane w IANA. –

Powiązane problemy