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

IQueryParser

COM
IID2ebdee67-3505-43f8-9946-ea44abc8e5b0継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

入力文字列を解析して IQuerySolution オブジェクトを生成するためのメソッドを提供します。

解説(Remarks)

StructuredQuerySample では、コンソールから行を読み取り、システムスキーマを使用して解析し、生成された条件ツリーを表示する方法を示しています。

メソッド 8

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Parse(LPWSTR pszInputString, IEnumUnknown* pCustomProperties, IQuerySolution** ppSolution)

Structured Query のキーワードやコンテンツを含む入力文字列を解析し、IQuerySolution オブジェクトを生成します。

pszInputStringLPWSTRin解析対象となる Unicode 入力文字列へのポインターです。
pCustomPropertiesIEnumUnknown*inアプリケーションが認識したカスタムプロパティごとに 1 つずつ用意された IRichChunk オブジェクトの列挙です。このパラメーターには NULL を指定でき、その場合は空の列挙を指定した場合と同等になります。
ppSolutionIQuerySolution**outIQuerySolution オブジェクトを受け取ります。呼び出し元は、その IUnknown::Release メソッドを呼び出して解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IRichChunk オブジェクトでは、位置情報がカスタムプロパティの文字範囲を示し、文字列値が実際のプロパティの名前を表し、PROPVARIANT は使用されません。任意のプロパティを使用できますが、この目的のために次の汎用プロパティが用意されています。

アプリケーションは、これらを pCustomProperties パラメーターに渡す列挙内で使用し、生成された条件ツリーの中から探し出すことができます。
vtbl 4 HRESULT SetOption(STRUCTURED_QUERY_SINGLE_OPTION option, PROPVARIANT* pOptionValue)

入力文字列を解析する際に使用する、指定したワードブレーカーなどの単一のオプションを設定します。

optionSTRUCTURED_QUERY_SINGLE_OPTIONin設定するオプションの種類を識別します。
pOptionValuePROPVARIANT*inoption パラメーターに設定する値を指定する PROPVARIANT へのポインターです。この値は、option パラメーターの値に応じて異なる方法で解釈されます。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

詳細については、STRUCTURED_QUERY_SINGLE_OPTION を参照してください。

vtbl 5 HRESULT GetOption(STRUCTURED_QUERY_SINGLE_OPTION option, PROPVARIANT* pOptionValue)

このクエリパーサーについて、指定した単純なオプションの値を取得します。

optionSTRUCTURED_QUERY_SINGLE_OPTIONin取得するオプションを指定する STRUCTURED_QUERY_SINGLE_OPTION 列挙型です。
pOptionValuePROPVARIANT*out指定したオプション値へのポインターを受け取ります。詳細については、STRUCTURED_QUERY_SINGLE_OPTION を参照してください。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT SetMultiOption(STRUCTURED_QUERY_MULTIOPTION option, LPWSTR pszOptionKey, PROPVARIANT* pOptionValue)

入力文字列を解析する際に使用する、指定した条件ジェネレーターなどの複合的なオプションを設定します。

optionSTRUCTURED_QUERY_MULTIOPTIONin設定する複合的なオプションです。
pszOptionKeyLPWSTRinoption パラメーターの値ごとに異なる方法で解釈される Unicode 文字列です。詳細については、STRUCTURED_QUERY_MULTIOPTION を参照してください。
pOptionValuePROPVARIANT*inoption パラメーターの値ごとに異なる方法で解釈される PROPVARIANT へのポインターです。詳細については、STRUCTURED_QUERY_MULTIOPTION を参照してください。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT GetSchemaProvider(ISchemaProvider** ppSchemaProvider)

現在読み込まれているスキーマを参照するためのスキーマプロバイダーを取得します。

ppSchemaProviderISchemaProvider**outISchemaProvider オブジェクトへのポインターのアドレスを受け取ります。呼び出し元のアプリケーションは、その IUnknown::Release メソッドを呼び出して解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT RestateToString(ICondition* pCondition, BOOL fUseEnglish, LPWSTR* ppszQueryString)

条件を構造化クエリ文字列として再表現します。条件が元のクエリ文字列を解析した結果である場合は、そのクエリ文字列のキーワードが可能な限り使用されます。そうでない場合は、既定のキーワードが使用されます。

pConditionICondition*in再表現する条件です。
fUseEnglishBOOLin予約されています。FALSE を指定する必要があります。
ppszQueryStringLPWSTR*out再表現されたクエリ文字列を受け取ります。呼び出し元は、CoTaskMemFree を呼び出して文字列を解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT ParsePropertyValue(LPWSTR pszPropertyName, LPWSTR pszInputString, IQuerySolution** ppSolution)

指定したプロパティに対する条件を解析します。

pszPropertyNameLPWSTRinプロパティ名です。
pszInputStringLPWSTRinそのプロパティを基準として解析するクエリ文字列です。
ppSolutionIQuerySolution**outIQuerySolution オブジェクトを受け取ります。呼び出し元のアプリケーションは、その IUnknown::Release メソッドを呼び出して解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

入力文字列には、構造化クエリ内でプロパティの直後に記述できる内容であれば何でも指定できます。たとえば、"from:(bill OR alex)" は有効な構造化クエリであるため、pszPropertyName パラメーターに System.StructuredQuery.Virtual.From(From はそのキーワードです)を指定し、pszInputString パラメーターに "(bill OR alex)" または "bill OR alex" を指定することは有効です。この場合、System.StructuredQuery.Virtual.From プロパティと文字列 "bill" および "alex" を関連付けるリーフノードの OR が生成されます。

vtbl 10 HRESULT RestatePropertyValueToString(ICondition* pCondition, BOOL fUseEnglish, LPWSTR* ppszPropertyName, LPWSTR* ppszQueryString)

条件に含まれる指定したプロパティをクエリ文字列として再表現します。

pConditionICondition*inクエリ文字列として再表現する条件です。
fUseEnglishBOOLin予約されています。FALSE を指定する必要があります。
ppszPropertyNameLPWSTR*outプロパティ名を表す Unicode 文字列へのポインターを受け取ります。呼び出し元のアプリケーションは、CoTaskMemFree を呼び出して文字列を解放する必要があります。
ppszQueryStringLPWSTR*outそのプロパティに対するクエリ文字列へのポインターを受け取ります。呼び出し元のアプリケーションは、CoTaskMemFree を呼び出して文字列を解放する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

条件のリーフノードに複数のプロパティ名が含まれている場合、またはプロパティ名がまったく含まれていない場合は、E_INVALIDARG が返されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IQueryParser "{2EBDEE67-3505-43F8-9946-EA44ABC8E5B0}"
#usecom global IQueryParser IID_IQueryParser "{B72F8FD8-0FAB-4DD9-BDBF-245A6CE1485B}"
#comfunc global IQueryParser_Parse                         3 wstr,sptr,sptr
#comfunc global IQueryParser_SetOption                     4 int,var
#comfunc global IQueryParser_GetOption                     5 int,var
#comfunc global IQueryParser_SetMultiOption                6 int,wstr,var
#comfunc global IQueryParser_GetSchemaProvider             7 sptr
#comfunc global IQueryParser_RestateToString               8 sptr,int,var
#comfunc global IQueryParser_ParsePropertyValue            9 wstr,wstr,sptr
#comfunc global IQueryParser_RestatePropertyValueToString  10 sptr,int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。