2016-10-15 4 views
0

azure検索サービスでhow *が動作することを知りたい。現在私は自分のデータのインデックスを作成し、jsonの "search"フィールドに次のデータを渡してクエリを実行しています。Azure Search Serviceでのアスタリスク(*)の動作

  1. "検索":(野生カード付き) "ATM *"
  2. "検索": "ATM"(単純なテキスト)
  3. "検索" "ATM \ *"(に*をエスケープ*と一致する要素がありますが、機能していません)

しかし、いずれの場合も同じ結果が得られます。私はAzure検索で*(または他の特殊文字)がどのように解釈されているか知りたい。

これらのすべてが同じ結果を示している場合は、どのパフォーマンスを最大限に活用する必要がありますか?

おかげ

詳細を追加:

私は次のエントリがあります。私は、これらの4件の結果を取得していますすべての3例では ATM、ATM 1、ATM 2、ATM *

を。最初のケースでは、1つの結果(ATM)のみが返されます。 2番目のケースではすべての結果。 3番目のケースではATM *。

+0

あなたが期待している結果とあなたが実際に得ている結果を記述できますか? –

答えて

1

この場合、3つの検索クエリがすべて同じ結果を返すことが予想されます。

索引付けでは、文書は字句解析を行います。文書内のテキストは、用語と記号や句読点の削除などの追加処理にトークン化され、ステミング/レマタイゼーションが行われます。デフォルトの標準アナライザーを使用していると仮定すると、文書の内容から次のトークンが得られます。

doc1 ATM => atm

doc2。 ATM1 => atm、1

doc3。 ATM2 => atm、2

doc5。 ATM * => atm(句読点と記号はデフォルトで破棄されます)

用語索引語は、逆索引に格納され、用語を含む文書の検索に使用されます。

クエリ時には、検索クエリも同じ分析プロセスを実行します。標準アナライザは、用語を正規化(小文字)し、句読点を破棄します。したがって、検索クエリ "ATM"と "ATM *"の両方がatmに解析され、同じ結果が返されます。ワイルドカード検索クエリ「ATM *」は、わずかに異なるパスを経由します。ワイルドカードプレフィックスクエリは、プレフィックスで始まる逆インデックスの用語に展開されます。したがって、文書内に「ATM1」と「ATM2」(スペースなし)がある場合、ワイルド検索クエリ「ATM *」も同様に一致します。

通常、ワイルドカード検索クエリ(ATM *)は、クエリ拡張処理のために正確な検索クエリ(ATMまたはATM *)よりもはるかに低速です。

また、特殊文字( '*'など)を含む用語を見つける必要がある場合は、custom analysis in Azure Searchをご覧ください。私たちは、ユーザーが分析チェーンをカスタマイズするさまざまな方法を提供しています。

ネイト

関連する問題