Azure Cognitive Search のサポート リファレンス

Current version: 10.1
注意

Azure Cognitive Search は将来的に廃止され、Sitecore では今後のリリースでこのサービスのサポートを終了する予定です。

このトピックでは、クエリ サポートやファセット サポートなど、Azure Cognitive Search のさまざまな種類のサポートについて説明します。このリファレンス トピックと併せて「チュートリアル: Azure Cognitive Search の設定」もご覧ください。

クエリ サポート

Sitecore Azure Search は、LINQ から Microsoft Azure Cognitive Search API でサポートされているクエリへのマッピング機能を提供します。

現時点では、Azure Cognitive Search サービスは、Lucene と OData の 2 種類のクエリ構文をサポートしています。

Lucene クエリ構文は次の目的で使用されます。

  • フィールドスコープ クエリ

  • 正規表現検索

  • ワイルドカード検索

OData クエリ構文には、次のような特徴があります。

  • intdateTime, など、検索不可能なデータ型のシナリオをフィルタリングできます。

  • 比較に使用されます。

  • コレクションに含まれています。

  • 単項演算子を使用します。

Sitecore Azure Search プロバイダーは、Lucene で利用可能なクエリ シナリオのほとんどに対応しています。最も一般的に使用されるシナリオは次のとおりです。

クエリ シナリオ

フィールド スコープ検索

RequestResponse

from d in queryable where d.Name.Contains("Sitecore") select d 
from d in queryable where d.Name.Like("Sample Item") select d 
from d in queryable where d.Name == "Sample Item" select d 
from d in queryable where d.Name.Matches("Sample.*") select d

論理演算子

(&OrNot、および Between を含む)

RequestResponse

from d in queryable where d.Name.Contains("Sitecore") && d.Price > 100 select d 
from d in queryable where d.Price.Between(1000, 2000, Inclusion.Both)select d 

順序

RequestResponse

from d in queryable where d.Name.Like("Sample Item") orderby d.Id select d 

ブースティング

RequestResponse

from d in queryable where d.Name.Like("Sample").Boost(2f) || d.Template.Like("Sample") select d 

コレクション内の検索

RequestResponse

from d in queryable where d.TemplateIds.Contains(Sitecore.TemplateIDs.Layout) select d 

重要

StartsWith, Contains のようなクエリは、パス (/sitecore/content/home など) や GUID のコレクションを含む EDM.String タイプのフィールドには適用しないでください。これは、Azure Cognitive Search が正規表現検索を単一の単語に一致させるためです。

現在サポートされていない機能としては、次のものが挙げられます。

  • 結合 (GroupJoinJoinSelfJoin. など)

  • 結合されている、またはオペランドである Lucene 構文と OData 構文の両方の述語を使用したクエリ。次に例を示します。

    RequestResponse
    
    from d in queryable where d.Name.Contains("Sitecore") || (d.Price > 1000) select d) 
    
    

ファセット サポート

Sitecore Azure Search は、Content Search のファセット API から Microsoft Azure Cognitive Search API でサポートされているクエリへのマッピング機能を提供します。

現在サポートされている機能は次のとおりです。

機能

ファセットを作成する

queryable.FacetOn(x => x.Country).GetFacets()

1 回の要求でファセットを作成する

queryable.FacetOn(x => x.Country).FacetOn(x => x.Brend).FacetOn(x => x.Price).GetFacets()

値をファセットにフィルタリングする

queryable.FacetOn(x => x.Country, null, new {"Denmark", "Germany"}).GetFacets()

最小ドキュメント数を基準として語句を除外する

queryable.FacetOn(x => x.Country, 10).GetFacet()

このクエリは、10 件を超えるドキュメントを含む語句を返します。

重要

この機能はクライアント側でのみサポートされているため、パフォーマンスを向上させる目的で使用することはできません。

ファセット内の語句の数を制限する

プロバイダーは、デフォルトでファセットごとに 10 件の語句を返します。/configuration/sitecore/contentSearch/configuration/indexes/index/ セクションで maxTermsCountInFacet パラメーターを追加することにより、設定ファイルで制限を設定できます。

RequestResponse

<configuration>
    <sitecore search:require="azure">
        <contentSearch>
            <configuration>
                <indexes>
                    <index id="sitecore_sxa_web_index">
                        <maxTermsCountInFacet>50</maxTermsCountInFacet>
                    </index>
                </indexes>
            </configuration>
        </contentSearch>
    </sitecore>
</configuration>
注記

現在のところ、すべてのピボット ファセットがサポートされているわけではありません。サポートされていないものは要求から除外され、無視されます。

Do you have some feedback for us?

If you have suggestions for improving this article,