ホーム › System.Search › INamedEntityCollector
INamedEntityCollector
COM公式ドキュメント
IConditionGenerator オブジェクトによって識別された名前付きエンティティを蓄積するためのメソッドを提供します。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT Add(DWORD beginSpan, DWORD endSpan, DWORD beginActual, DWORD endActual, IEntity* pType, LPWSTR pszValue, NAMED_ENTITY_CERTAINTY certainty)
解析対象の入力文字列のトークン化されたスパンとして識別された、単一の (候補となる) 名前付きエンティティを、この INamedEntityCollector コレクションに追加します。
| beginSpan | DWORD | in | 先頭の引用符を含む、トークンスパン全体の開始位置。 | ||||||||
| endSpan | DWORD | in | 末尾の引用符を含む、トークンスパン全体の終了位置。 | ||||||||
| beginActual | DWORD | in | トークンスパンのうち、候補となる名前付きエンティティを示す部分の開始位置。 | ||||||||
| endActual | DWORD | in | トークンスパンのうち、候補となる名前付きエンティティを示す部分の終了位置。 | ||||||||
| pType | IEntity* | in | 名前付きエンティティのセマンティック型。 | ||||||||
| pszValue | LPWSTR | in | エンティティの名前を表す文字列。 | ||||||||
| certainty | NAMED_ENTITY_CERTAINTY | in | 次のいずれかの値です。
|
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
クエリパーサーが入力文字列を条件ノードに解析する際、パーサーは IConditionGenerator オブジェクトを呼び出し、そのオブジェクトが INamedEntityCollector::Add を呼び出して入力文字列内の名前付きエンティティ候補を収集します。IConditionGenerator オブジェクトは、入力文字列内で認識した名前付きエンティティ候補ごとにこのメソッドを呼び出す必要があります。各エンティティについて、条件ジェネレーターは次の情報を提供する必要があります。
- 入力文字列のどの部分に対応するか
- 名前付きエンティティのセマンティック型
- 名前付きエンティティの値の文字列表現
- その入力が実際にその名前付きエンティティであるという確信度
名前付きエンティティが入力文字列の解釈に使用された場合、条件ジェネレーターの <a href="/windows/desktop/api/structuredquery/nf-structuredquery-iconditiongenerator-generateforleaf">GenerateForLeaf</a> メソッドが、値の文字列を引数の 1 つとして呼び出されます。
最初の 4 つの引数の間には、次の関係が維持されている必要があります: beginSpan = beginActual < endActual = endSpan。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_INamedEntityCollector "{AF2440F6-8AFC-47D0-9A7F-396A0ACFB43D}"
#usecom global INamedEntityCollector IID_INamedEntityCollector "{}"
#comfunc global INamedEntityCollector_Add 3 int,int,int,int,sptr,wstr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。