注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Object Explorer、Workshop、Functions API を含む Foundry プラットフォーム全体のテキスト検索は、アナライザーと呼ばれる仕組みでテキストを処理する基盤の検索エンジンを利用しています。アナライザーの仕組みを理解すると、より効果的な検索クエリを記述し、アプリケーションでより優れた検索体験を構築できます。
文字列プロパティが検索用にインデックス化されると、プラットフォームはアナライザーを通じてその値を処理します。デフォルトのアナライザーである標準アナライザー(Lucene StandardAnalyzer ↗ を参照)は、次の手順を実行します。
たとえば、プロパティ値 The Quick Brown Fox は、トークン the、quick、brown、fox として保存されます。quick を検索すると、検索エンジンはこのトークンを保存済みのトークンと照合し、一致を検出します。
このトークンベースの方式には、次の重要な特徴があります。
brown fox の検索では brown と fox のトークンを別々に評価するため、順序や近接性に関係なく、両方のトークンを含むすべてのプロパティが一致します。トークンが順番どおりに連続して出現することを条件にするには、フレーズ検索("brown fox")を使用します。rown は完全なトークンではないため、rown の検索は brown に一致しません。文字列プロパティで使用するアナライザーは、オントロジーで設定します。次の種類のアナライザーが利用可能です。
| アナライザー | 動作 | 値の例 | 生成されるトークン |
|---|---|---|---|
| 標準(デフォルト) | 空白と句読点で分割し、小文字に変換します | The Quick-Brown Fox | the, quick, brown, fox |
| シンプル | 文字以外のすべての文字で分割し、小文字に変換します(数字と句読点は削除されます) | The Quick-Brown Fox 42 | the, quick, brown, fox |
| 分析なし | 値全体を1個のトークンとして保存します | The Quick-Brown Fox | The Quick-Brown Fox |
| 空白 | 空白のみで分割し、大文字と小文字を保持します | The Quick-Brown Fox | The, Quick-Brown, Fox |
| 言語 | 言語固有のトークン化、ステミング、ストップワードの除去を適用します | Running quickly(英語) | run, quick |
言語アナライザーは、次の言語をサポートしています:english、french、german、japanese、korean、arabic、combined_arabic_english。
プロパティのアナライザーは、Ontology Manager のプロパティの検索設定で確認または変更できます。プロパティを検索可能にするには、検索可能レンダリングヒントを有効にする必要があります。
標準アナライザーは、アンダースコアとピリオドを区切り文字ではなくトークンの一部として扱います。そのため、次のようになります。
banana_pudding は、banana と pudding ではなく、1個のトークン banana_pudding として保存されます。user.name は、user と name ではなく、1個のトークン user.name として保存されます。トークンベースの検索方法を使用する場合、banana の検索は値 banana_pudding に一致しません。このような値を一致させる必要がある場合は、banana* のようなワイルドカード検索を使用するか、空白アナライザーの使用を検討してください。
Object Explorer は引き続き、オントロジーの探索、グローバル検索、個々のオブジェクトの表示のための主要なインターフェースです。Insight は Object Explorer を基に拡張された分析機能を提供し、Object Explorer と併せて利用できます。
Object Explorer は、一致の動作が異なる2つの検索インターフェースを提供します。
Object Explorer のホームページと結果ページにあるグローバル検索バーは、すべてのオブジェクトタイプの検索可能なすべてのプロパティを対象に、トークンベースの検索を実行します。デフォルトでは、クエリ内の各単語が OR ロジックで個別に検索されます。たとえば、yellow cab を検索すると、yellow または cab に一致するオブジェクトが返されます。
検索構文で説明されている検索構文の機能を使用して、この動作を変更できます。
"yellow cab")と、フレーズの完全一致を条件にできます。* を使用すると0文字以上に、? を使用すると1文字に一致します。末尾のワイルドカード(term*)はサポートされていますが、先頭と末尾を組み合わせたワイルドカード(*row* など)はサポートされていません。~ を追加すると、近似一致を検索できます。グローバル検索バーでは、先頭のワイルドカードを使用した検索はサポートされていません。これは、探索で個々の文字列プロパティを絞り込む場合にのみ利用可能で、Ontology Manager で先頭のワイルドカードを有効にするレンダリングヒントが有効になっている文字列プロパティに限られます。検索可能レンダリングヒントも選択されている必要があります。レンダリングヒントの設定について詳しくは、レンダリングヒントを参照してください。
特定のオブジェクトタイプを探索するとき、個々の文字列プロパティにキーワードフィルターを適用できます。これらのフィルターでは、次の一致モードを利用できます。
| モード | 動作 |
|---|---|
| 含む(デフォルト) | プロパティにすべての検索トークンが含まれるオブジェクトに一致します |
| で始まる | 検索語で始まるトークンがプロパティに含まれるオブジェクトに一致します(term* と同等) |
| 完全一致 | プロパティ値が検索語と完全に一致するオブジェクトに一致します |
| ではない | プロパティに検索トークンが含まれるオブジェクトを除外します |
プロパティのキーワードフィルターは、プロパティのアナライザーが生成する個々のトークンに対して照合します。プロパティが分析なしアナライザーを使用している場合、値全体が1個のトークンとして扱われるため、それに合わせて照合する必要があります。
先頭のワイルドカードを使用した検索では、プロパティ値が特定の語句で終わるオブジェクトを検索できます。たとえば、*smith を検索すると、Goldsmith、Blacksmith、smith などの値に一致します。
先頭のワイルドカードを使用した検索を利用するには、対象の文字列プロパティで先頭のワイルドカードを有効にするレンダリングヒントを有効にする必要があります。
利用可能なレンダリングヒントの全一覧については、レンダリングヒントを参照してください。
レンダリングヒントを有効にすると、検索語の先頭に * を付けることで、Object Explorer のプロパティフィルターで先頭のワイルドカードを使用できます。たとえば、次のようになります。
*smith は、Goldsmith、Blacksmith、smith に一致します。*ing は、running、swimming、ing に一致します。先頭と末尾を組み合わせたワイルドカード(*term*)はサポートされていません。先頭のワイルドカード(*term)または末尾のワイルドカード(term*)のいずれかは使用できますが、両方を同時に使用することはできません。文字列の部分一致が必要な場合は、Contour または Workshop の Filter List の正規表現モードの使用を検討してください。
Workshop では、オブジェクトを検索して絞り込む方法がいくつか用意されており、それぞれ利用できる機能が異なります。
フィルターリストのキーワード検索コンポーネントは、クエリ時にユーザーが選択できる5つの検索モードに対応しています。
| モード | 動作 |
|---|---|
| すべて | 最も広範な検索です。トークン一致、ワイルドカード一致、接頭辞一致を組み合わせて、クエリに部分一致または完全一致する結果を返します。ワイルドカードによる部分一致では、クエリにアナライザーを適用せずに、クエリをインデックス化済みのトークンと直接比較します。そのため、ワイルドカードクエリは、分析なしまたは空白アナライザーを使用するプロパティで最も予測しやすい動作をします。 |
| いずれか | プロパティにいずれかの検索トークンが含まれるオブジェクトに一致します |
| 完全一致 | プロパティにすべての検索トークンが順序どおりに完全一致するフレーズとして含まれるオブジェクトに一致します |
| 詳細 | 複雑なクエリに使用できる AND、OR、NOT、引用符、丸括弧によるブール構文に対応しています |
| 正規表現 | プロパティのトークンに正規表現パターンを適用してオブジェクトに一致します |
高度なフィルタリングの詳細については、フィルターリストの高度なフィルタリングのドキュメントを参照してください。
Workshop の探索検索バーウィジェットは、Object Explorer のグローバル検索バーと同じ検索基盤を使用します。フレーズ検索用の引用符、論理演算子、ワイルドカード、あいまい検索など、同じ構文に対応しています。
オブジェクトセットフィルター変数は、接頭辞一致のみを行う CONTAIN フィルターに対応しています。たとえば、プロパティの値が id000123 で、フィルタークエリが id0001 の場合、一致と見なされます。ただし、クエリ d0001 は値の先頭から始まっていないため、一致しません。
Functions API (TSv1)では、文字列フィルターメソッドを通じて、テキスト検索の動作を最も細かく制御できます。
| メソッド | 動作 |
|---|---|
.exactMatch() | プロパティの値がクエリ文字列に完全一致するオブジェクトに一致します |
.phrase() | クエリをトークンに分割し、すべてのトークンが順序どおりに、その間にほかのトークンを挟まずに含まれる値に一致します |
.phrasePrefix() | .phrase() と同じですが、最後のトークンについては、そのトークンで始まるトークンにも一致します |
.prefixOnLastToken() | クエリをトークンに分割し、順序を問わずすべてのトークンが含まれる値に一致します。最後のトークンについては、そのトークンで始まるトークンにも一致します |
.matchAnyToken() | クエリをトークンに分割し、いずれかのトークンが含まれる値に一致します |
.matchAllTokens() | クエリをトークンに分割し、順序を問わずすべてのトークンが含まれる値に一致します |
.fuzzyMatchAnyToken() | .matchAnyToken() と同じですが、編集距離の範囲内での近似一致も許容します |
.fuzzyMatchAllTokens() | .matchAllTokens() と同じですが、編集距離の範囲内での近似一致も許容します |
.phrase() および .phrasePrefix() メソッドは、アンダースコアやピリオドによって作られるトークン境界をまたいで一致することはありません。たとえば、banana_pudding は単一のトークンであるため、.phrase("banana") は値 banana_pudding に一致しません。
次のテーブルは、それぞれのコンテキストで利用可能な検索機能をまとめたものです。
| 機能 | Object Explorer(グローバル) | Object Explorer(プロパティフィルター) | Workshop フィルターリスト | Functions API |
|---|---|---|---|---|
| トークン検索 | はい | はい | はい | はい |
| フレーズ検索 | はい(引用符) | いいえ | はい(完全一致モード) | はい(.phrase()) |
| 接頭辞検索 | はい(term*) | はい(次で始まる) | はい(すべてモード) | はい(.phrasePrefix()、.prefixOnLastToken()) |
| 先頭のワイルドカード検索 | いいえ | はい(レンダリングヒントが必要) | いいえ | いいえ |
| ワイルドカード検索 | はい(*、?) | いいえ | はい(すべてモード) | いいえ |
| あいまい検索 | はい(~) | いいえ | いいえ | はい(.fuzzyMatchAnyToken()、.fuzzyMatchAllTokens()) |
| ブール演算子 | はい (AND, OR, NOT) | いいえ | はい(詳細モード) | はい(Filters.and()、Filters.or()、Filters.not()) |
| 正規表現 | いいえ | いいえ | はい(正規表現モード) | いいえ |
app*)または接頭辞検索メソッドを使用しない限り、app を検索しても application には一致しません。これは、標準アナライザーがトークン application を生成し、app はそのトークンに完全一致しないためです。first_name と user.name を単一のトークンとして扱います。first_name 内の first を検索する必要がある場合は、ワイルドカードを使用するか、プロパティのアナライザーの変更を検討してください。New York を検索すると、new OR york に一致するオブジェクトが返されるため、想定外の結果が含まれることがあります。フレーズの完全一致には "New York" を使用します。Quick* など)を使用する場合、クエリ文字列はアナライザーで処理されず、インデックス化済みのトークンと1文字ずつ比較されます。これには次の2つの影響があります。
a search term* など)は個々のトークンと比較され、一致しません。したがって、ワイルドカード検索は実質的に単一単語のクエリに限られます。単語をまたぐ部分一致には、Contour または Workshop フィルターリストの正規表現モードの使用を検討してください。*term)は、Ontology Manager で [先頭のワイルドカードを有効にする] のレンダリングヒントが有効になっている文字列プロパティでのみ利用できます。このレンダリングヒントがない場合、先頭のワイルドカードを使用するクエリは結果を返しません。*term* を検索できません。文字列の部分一致が必要な場合は、Contour または Workshop フィルターリストの正規表現モードの使用を検討してください。