2012-03-05 25 views
15

AD ve LDAP sorgularında çok sınırlı bilgiye sahibim. Bu yüzden joker karakterlerin nasıl kullanılacağı hakkında basit bir sorularım var.LDAP arama filtrelerindeki/kartlarındaki joker karakterleri kullanarak

nesne bir displayName ile var gerekiyordu "ITSM - Problem Yönetimi"

bir joker ile filtrenin Benim şu anki uygulama şöyle: Bir kullanıcı bir anahtar kelime girersiniz

(displayName=SEARCHKEYWORD*) 

ise

:

Ben hem joker uygulamak istiyoruz aşağıda gibi biter - "Sorunu", o ismin ilk bölümünü ihtiyacı beri nesneyi bulmak mümkün olmaz, yani "ITSM" dir

(displayName=*SEARCHKEYWORD*) 

İdeal olarak, bu "Sorun" girişine izin verir ve "ITSM - Sorun Yönetimi" için arama yapmasını sağlar. Ama joker başlangıçta koyarken işe yaramaz. Denediğimde, sadece bir şey asıyor ve herhangi bir sonuç döndürmüyor.

Bunu nasıl çözebileceğime dair herhangi bir fikir veya düşünce var mı? Herhangi bir girdi çok takdir edilecektir. Teşekkürler!

+1

Dizin sunucusunun uygun şekilde yapılandırıldığından emin olmak için dizin yöneticileriyle ilgili alt klasör filtrelerini kullanma niyetinizi bildirmelisiniz. Ayrıca bkz. [LDAP: Programlama Uygulamaları] (http://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/). –

+0

Sadece meraktan, "ITSM" ne anlama geliyor? Ben bir özel ITSM biliyorum, ama seninkiyle aynı olduğunu sanmıyorum ... – ErikE

+0

@ErikE Cevabımdaki gecikme için özür dilerim, ITSM = IT Servis Yönetimi. BT operasyonları için yönetim politikaları ve süreçleri :) – AnimaSola

cevap

21

bir arka * ile bir filtre bağımsız değişken bir dizin araması ile hemen hemen anında değerlendirilebilir. Bir lider *, dizin boyunca bir sıralı arama anlamına gelir, bu nedenle O (N) 'dir. Yaşlar alacak.

Gereksinimi tekrar gözden geçirmenizi öneririm.

"(|(displayName=SEARCHKEY*)(displayName=ITSM - SEARCHKEY*)(displayName=alt prefix - SEARCHKEY*))" 

Aksak, ama benim organizasyon içinde benzer bir şey yapıyorum:

+0

Önde gelen joker ile yaşlandığınız doğru gibi gözüküyor, tek bir nesneyi araştırıp tam adıyla aradım ve hala aramayı çözemedim, sanırım hiç düşünmeyeceğim. Teşekkür ederim! – AnimaSola

+0

Bu tür bir aramayı tamamen kullanıyorum ve tamam, sadece ObjectClass'a göre filtrelemek zorundayım: '(& (ObjectClass = Kişi) (cn = * KEYWORD *)) –

+0

@ManuelGutierrez Zaman hala * O (N), * ancak ek 'objectClass' filtresi nedeniyle artık daha küçük bir * ile uğraşıyorsunuzdur * * – EJP

1

Bu, en azından MSDN ağındaki Search Filter Syntax makalesine göre çalışmalıdır.

Fark ettiğin "asmak" muhtemelen sadece bir gecikme. Aynı sorguyu daha dar kapsamda (örneğin, test nesnesinin bulunduğu belirli OU) çalıştırmayı deneyin, çünkü tüm AD nesnelerine karşı çalıştırırsanız, işlem için çok uzun sürebilir.

Ayrıca iki bölüme ayırma filtresine çalışabilir:

(|(displayName=*searchstring)(displayName=searchstring*)) 
+0

Tüm adı girdiğimde ve aramaya göre belirli bir nesneyi aramak için yukarıdaki filtreyi denedim. Asla çözemeyeceğini sanmıyorum. EJP'nin önde gelen joker karakterlerinin yaşlandırabileceği yorumu doğru olabilir. Cevabı takdir ediyorum, teşekkürler! :) – AnimaSola

6

Yapabileceğiniz en iyi şey bu yüzden, önekler tahmin etmek olacaktır.