Win32 API 日本語リファレンス
ホームSystem.Search › INamedEntityCollector

INamedEntityCollector

COM
IIDaf2440f6-8afc-47d0-9a7f-396a0acfb43d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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 コレクションに追加します。

beginSpanDWORDin先頭の引用符を含む、トークンスパン全体の開始位置。
endSpanDWORDin末尾の引用符を含む、トークンスパン全体の終了位置。
beginActualDWORDinトークンスパンのうち、候補となる名前付きエンティティを示す部分の開始位置。
endActualDWORDinトークンスパンのうち、候補となる名前付きエンティティを示す部分の終了位置。
pTypeIEntity*in名前付きエンティティのセマンティック型。
pszValueLPWSTRinエンティティの名前を表す文字列。
certaintyNAMED_ENTITY_CERTAINTYin

次のいずれかの値です。

説明
NEC_LOW この名前付きエンティティである可能性はありますが、追加の根拠を確認することが望まれます。
NEC_MEDIUM この名前付きエンティティである可能性が高く、そのまま使用して差し支えありません。
NEC_HIGH ほぼ確実にこの名前付きエンティティであり、他の可能性は破棄して問題ありません。

戻り値

型: 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)

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 指定が可能。