2012-03-05 7 views
15

ADクエリとLDAPクエリでは非常に知識が限られているため、ワイルドカードの使用方法に関する簡単な質問があります。LDAP検索フィルタ/クエリでワイルドカードを使用する

(displayName=SEARCHKEYWORD*) 

ユーザーはのキーワードを入力した場合: - 「問題管理ITSM」

ワイルドカードを持つフィルタの私の現在の実装では、などでの、DisplayNameにオブジェクトがあるはず

"問題"、彼は名前の最初の部分、すなわち "ITSM"を必要とするのでオブジェクトを見つけることができません。

(displayName=*SEARCHKEYWORD*) 

理想的には、これは「問題」の入力を許可し、「ITSM - 問題管理」を検索するようにします。しかしワイルドカードは最初に置いたときには機能しないようです。私が試したときには、ハングアップして結果を返さないようです。

私はこれをどのように解決することができますか?どんな入力も高く評価されます。ありがとう!

+1

ディレクトリ・サーバーが適切に構成されていることを確認するには、サブストリング・フィルターを使用する意思をディレクトリー管理者に知らせる必要があります。 [LDAP:Programming Practices](http://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/)も参照してください。 –

+0

「ITSM」は何を表しているのですか?私は特定のITSMを知っていますが、あなたと同じではないかと疑問に思っています。 – ErikE

+0

@ErikE私の返信が遅れるのを謝罪します。 IT運用のためのポリシーとプロセスを管理する:) – AnimaSola

答えて

21

フィルタ引数は、インデックス検索を経由してほぼ瞬時に評価することができます。先頭の*は索引を通した順次検索を意味するので、O(N)です。それは年を取るでしょう。

要件を再検討することをお勧めします。

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

不格好が、私は自分の組織内で同じようなことをやっている:

+0

あなたが大手のワイルドカードで長年を過ごしているように見えますが、特定の1つのオブジェクトを完全な名前で検索しましたが、まだ検索が解決されていません。ありがとうございました! – AnimaSola

+0

私はこの種の検索を常時使用しています。これはObjectClassでフィルタリングするだけです。 '(&(ObjectClass = Person)(cn = * KEYWORD *))' –

+0

@ManuelGutierrez時間はまだ* O )、*しかし、追加の 'objectClass'フィルタのおかげで、より小さい* Nを処理しています* – EJP

1

これは少なくともMSDNネットワーク上のSearch Filter Syntaxの記事に従って動作します。

あなたが気づいた "ハングアップ"はたぶん遅れているでしょう。すべてのADオブジェクトに対して実行すると処理に非常に時間がかかるので、狭い範囲(たとえば、テストオブジェクトが配置されている特定のOU)で同じクエリを実行してみてください。

また、二つの部分にフィルタを分離してみてください可能性があります、末尾の*と

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

私は全体の名前を入力したので、1つの特定のオブジェクトを検索するために上記のフィルタを試しました。私はそれが決して解決するとは思わない。 EJPの主なワイルドカードに年齢がかかるというコメントは正しいかもしれません。 感謝していますが、感謝します! :) – AnimaSola

6

最善の策は、そう、接頭辞を予想するだろう。