リスタを使用するには、リスタは各ソースの外部 ID を表す形式を指定する必要があります。リスタの外部 ID は、リスタ名と完全参照から構成されます。完全参照は groupName と localRef から構成されます。以下の例で 外部 ID を示します。
:MYLISTER:groupname:localref
この例では、MYLISTER がリスタ名のエイリアスになります。エイリアスを指定しないと、リスタ・クラスの完全なクラス名が使用されます。リスタのエイリアスを判別するには、GetAlias()Opens in a new tab メソッドを使用します。
リスタ名エイリアスは、現在のネームスペース内で重複しないようにします。すでに存在しているリスタ名エイリアスを指定すると、$$$IKListerAliasInUse エラーが生成されます。
SplitFullRef() と BuildFullRef()
カスタム・リスタには SplitFullRef() インスタンス・メソッドを指定する必要があります。このメソッドは、groupName と localRef を fullRef 文字列から抽出するために使用されます。その結果は SplitExtIdOpens in a new tab クラス・メソッドに提供されます。リスタが :MYLISTER:groupname:localref のような外部 ID 形式を持つと仮定してみましょう。
このシンプルな例では、fullRef は文字列 groupname:localref から構成されるため、groupName は $PIECE(fullRef,":",1)、localRef は $PIECE(fullRef,":",2) になります。これは非常にシンプルな例で、groupName か localRef の部分に ":" 文字が含まれていると機能しないことに注意してください。
カスタム・リスタには BuildFullRef() インスタンス・メソッドを指定する必要があります。このメソッドは、groupName と localRef を組み合わせて fullRef 文字列を構成するために使用されます。その結果は BuildExtIdOpens in a new tab クラス・メソッドに提供されます。
リストの展開
ExpandList()Opens in a new tab メソッドは、インデックスを作成する必要があるすべてのソースをリストします。このメソッドは、カスタム・リスタのために特定タイプのソースの場所または構造全体をスキャンする方法を実装するユーザ定義サブクラスでオーバーライドする必要があります。このメソッドのパラメータは、対応する AddListToBatch() メソッドを呼び出す際に使用されるものと同じになります。パラメータは、実装するリスタによって異なります。lister.AddListToBatch() メソッドや loader.ProcessList() メソッドに指定するパラメータがユーザにわかるように、必ずリスタ固有の ExpandList() パラメータを文書化しておいてください。
ExpandList() のパラメータは以下のとおりです (指定順)。
-
Path : ソースが置かれる場所で、文字列で指定します。
-
Extensions : リストするソースを識別する 1 つまたは複数のファイル拡張子接尾語。文字列の %List として指定します。
-
Recursive : パスのサブディレクトリでソースを検索するかどうかを指定するブーリアン値。
-
Filter : リストするソースを制限するために使用するフィルタを指定する文字列。
詳細は、“プログラムによるテキスト・データのロード” の章の "リスタ・パラメータ" を参照してください。
カスタム・プロセッサ
プロセッサは、NLP 処理のために全ソースを一時グローバルにコピーするか、ソースの参照を一時グローバルに格納することができます。NLP エンジンはこれらの一時グローバルを使用して、テキストのインデックスを作成し、その結果を NLP グローバルに格納します。
リスタが対応するプロセッサを持たない場合は、%iKnow.Source.Temp.ProcessorOpens in a new tab が既定のプロセッサになります。これは各ソースの全テキストを一時グローバルにコピーします。提供される他のプロセッサは、ソースの参照を一時グローバルに格納します。..StoreTemp を使用すると、ソースのコピーを指定できます。または、..StoreRef を使用すると、ソースの参照の格納を指定できます。
カスタム・コンバータ
コンバータはソース・テキストからタグを除去することで、ソース・テキストをプレーン・テキストに変換します。タグとは、表示や印刷用にテキストをフォーマットするために使用される、コンテンツ以外の要素です。例えば、RTF (Microsoft リッチ・テキスト形式) ファイルからタグを除去したり、PDF ファイルからプレーン・テキストを抽出するために、コンバータを使用できます。コンバータはリスタによって呼び出され、ソース・テキストのインデックスを作成する前に適用されます。ソース・ドキュメントの形式によっては、ソース・コンバータの使用はオプションになります。
NLP には、サブクラス %iKnow.Source.Converter.HtmlOpens in a new tab というサンプル・コンバータが 1 つ用意されており、これを使用してソース・テキストから HTML タグを削除できます。これは、基本的な HTML コンバータで、HTML ソース・テキストの完全な変換をサポートするには、このコンバータのインスタンスをカスタマイズすることが必要な場合があります。
カスタム・コンバータを実装するには、ベース・コンバータ・クラス %iKnow.Source.ConverterOpens in a new tab のいくつかのメソッドをオーバーライドする必要があります。
%OnNew
ユーザが提供する %OnNew() コールバック・メソッドは、%New() メソッドによって呼び出されます。これは、コンバータが必要とするパラメータの %List をパラメータとして使用します。
BufferString
BufferString()Opens in a new tab メソッドは、ドキュメント全体をコンバータにバッファするために、必要な回数だけ呼び出されます。それぞれの呼び出しは、data パラメータによってテキストのチャンクを提供します (最大 32K)。バッファするデータがなくなると、Convert() メソッドが呼び出されます。
Convert
Convert()Opens in a new tab メソッドは、バッファされたコンテンツを処理してデータをプレーン・テキストに変換したり (例 : RTF ファイル変換)、必要なデータをバッファから抽出します (例 : xml からのノード抽出)。変換されたデータは 32K より大きくなる可能性があるため、変換または抽出されたデータはバッファすることが必要になります。
NextConvertedPart
NextConvertedPart()Opens in a new tab メソッドは、Convert() メソッドの後で呼び出されます。このメソッドは 32K のチャンクで変換されたデータを返す必要があります。このメソッドが呼び出されるたびに、次のチャンクを返す必要があります。データがなくなると、このメソッドは空の文字列 ("") を返して、変換されたデータの抽出が終了したことを示します。