2012-03-22 12 views
0

私はポケベル番号に基づいて検索する必要があるLDAPからルックアップを行っています。私たちのページャ番号はハイフンやスペース、または括弧をつけている可能性があります。私は自分のポケベルフィールドに必要な検索フィルターを見つけようとしています。私のユーザーはLDAPフィールドに括弧やハイフンがどこにあるのか分からないかもしれないと仮定しています。サブストリングのLDAPフィルター?ハイフンと括弧をエスケープしますか?

最後の5桁の数字と一致するフィルタを作成しようとしています。

例(単一引用符は、LDAPに格納されていない、私は区切り文字としてここではそれらを使用していますが):

'127 13098' 
'125 or (44)8-9622' 
'126 (12349)' 

これらはすべて、LDAPで私たちのポケットベルフィールドの可能な値になります。

は、ここで私がこれまで持っているものです。

(&(objectCategoryの=人)(オブジェクトクラス=ユーザー)(SN = *)(givennameに= *)(ポケットベル= * "+ Pager.Trim()+" ))」

これは、最初の例のために正常に動作しますが、ユーザーは単に数字を入力した場合、それは、中央の一例を取得することはありません。

それは意志フィルターを書き込むことが可能になるだろう3つのケースの5桁の組み合わせを見つけるか、複数の検索を行う必要がありますか?

+0

これはあなたの質問に答えるものではありませんが、一般的にデータには、「または」の代わりに複数の値の属性を使用する必要があります。これにより、アプリケーションコードの簡素化はもちろんのこと、データ管理、検索、および監査がはるかに容易になります。アプリケーションがデータの形式を理解するように拡張することはできません。そのような方法は、脆弱で脆弱なアプリケーションやインフラストラクチャにつながります。 –

+0

私はあなたの意味を理解していない、テリー、または "あなたのデータは、複数値の属性を使用する必要があります"のかわりに。私の例ではデータ値を参照していますか?それは私がコントロールできないものです。私は、ポケベルの値を検索しようとしているだけで、値を編集したり更新したりするつもりはありません。 –

+0

データを制御できない場合は問題ありません。私は、 'pager'の値が' pager:125'や 'pager:(44)8-9622'のように多値属性に保存されている方が良いと言っていました。言い換えれば、ディレクトリエントリは 'or'という単語を使用するのではなく、各値に対して' pager'属性を持ちます。しかし、私が言うように、データのフォーマットを変更できない場合は、問題ではありません。 –

答えて

0

私は私がすることができますまたは一緒フィルタ、値に従いますが、かなりよく分からない:

(&(objectCategory=person)(objectClass=user)(|(pager=*127 13098*)(pager=125)(pager=126)...))

それはいくつかの特定のデータをフィルタリングいない限り、SnとgivenName属性フィルターは必要ありません。あなたのポケットベルの属性がインデックスに登録されていて、ADにタプルインデックスがあることを確認したいと思います。

+0

私は、OR:(|(ページャ= * "+ Pager.Trim()+")ページャ= * "+ Pager.Trim()。Substring(0、1)+" - "+" Pager。 Trim()。サブストリング(Pager.Trim()。Length - 4、4)+ ")) –

関連する問題