2012-03-05 70 views
15

Tengo un conocimiento muy limitado en las consultas AD y LDAP, así que tengo una pregunta simple sobre cómo usar comodines.usando comodines en filtros/consultas de búsqueda LDAP

supuso que es objeto con un idioma de "ITSM - Gestión de Problemas"

Mi implementación actual del filtro con un comodín es como tal:

(displayName=SEARCHKEYWORD*) 

Si un usuario podría introducir una palabra clave de "Problema", él no sería capaz de encontrar el objeto, ya que necesita la primera parte del nombre, que es "ITSM -"

me gustaría poner en práctica el comodín en ambos extremos, como a continuación:

(displayName=*SEARCHKEYWORD*) 

Idealmente, esto permitiría la entrada de "Problema" y lo haría buscar "ITSM - Gestión de problemas". Pero el comodín no parece funcionar cuando lo pones al principio. Cuando lo probé, parece que cuelga y no devuelve ningún resultado.

¿Alguna idea o idea sobre cómo puedo resolver esto? Cualquier aportación sería muy apreciada. ¡Gracias!

+1

debe informar a los administradores del directorio de su intención de utilizar filtros de subcadena para asegurarse de que el servidor de directorio está configurado correctamente. Ver también [LDAP: Prácticas de programación] (http://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/). –

+0

Solo por curiosidad, ¿qué significa "ITSM"? Conozco un ITSM en particular, pero dudo que sea el mismo que el tuyo ... – ErikE

+0

@ErikE Disculpas por el retraso en mi respuesta, ITSM = IT Service Management. Gobernando políticas y procesos para operaciones de TI :) – AnimaSola

Respuesta

21

Un argumento filtro con un trailing * se puede evaluar de forma casi instantánea a través de una búsqueda de índice. Un guiño * implica una búsqueda secuencial a través del índice, por lo que es O (N). Llevará años.

Le sugiero que reconsidere el requisito.

+0

Parece que tenías razón con el comodín líder que toma años, busqué un objeto específico por su nombre completo y todavía no ha resuelto la búsqueda, no creo que lo haga nunca. ¡Gracias! – AnimaSola

+0

Utilizo este tipo de búsqueda todo el tiempo y está bien, solo tengo que filtrar por ObjectClass de la siguiente manera: '(& (ObjectClass = Person) (cn = * KEYWORD *))' –

+0

@ManuelGutierrez El tiempo sigue siendo * O (N), * pero debido al filtro adicional 'objectClass', ahora se trata de un * N. * más pequeño – EJP

1

Esto debería funcionar, al menos de acuerdo con el artículo Search Filter Syntax en la red MSDN.

El "cuelgue" que ha notado es probablemente solo un retraso. Intente ejecutar la misma consulta con un ámbito más estrecho (por ejemplo, la unidad organizativa específica donde se encuentra el objeto de prueba), ya que puede tardar mucho tiempo para el procesamiento si lo ejecuta contra todos los objetos AD.

También puede intentar separar el filtro en dos partes:

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

He intentado el filtro de arriba para buscar un objeto específico, ya que ingresé el nombre completo, y la búsqueda toma años. No creo que alguna vez se resuelva. El comentario de EJP de que un comodín líder puede llevar años podría ser correcto. ¡Aunque agradezco la respuesta, gracias! :) – AnimaSola

6

Su mejor opción sería la de anticipar prefijos, por lo que:

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

Clunky, pero estoy haciendo una cosa similar dentro de mi organización.

Cuestiones relacionadas