検索ソースフィールド付きのマルチリストクエリ

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

ここでは、検索フィールド付きのマルチリストを作成する際によく使われるクエリをいくつか紹介します。

簡単なテキスト検索

マルチリストと検索フィールドでデータテンプレートを基にコンテンツ項目を作成した後、任意の項目フィールドに現れるテキストを検索できます。これはデフォルトで有効で、設定は不要です。以下のスクリーンショットは、ユーザーがテキストduckを含むすべてのアイテムを検索しているContent Editorでのテキスト検索を示しています。

A simple text search in a multilist with search field in the Content Editor

ルートフィルター

StartSearchLocationは、スコープをコンテンツツリー内の特定のサブツリーに限定するルートフィルターです。適用するには、検索を開始するサブツリーの識別子を以下のいずれかの形式で指定します。

StartSearchLocation={item_id}

StartSearchLocation=query:$home//*
注記

StartSearchLocation 1つのアイテム識別子しか受け付けられません。複数のルートを指定する場合はテンプレートフィルターを使いましょう。

以下の例では、ユーザーはCoffee Brandフォルダのアイテム識別子をコピーし、マルチリストフィールドに表示されるアイテムをそのフォルダに保存されているコンテンツ項目に限定します。

Copying the Item ID for a folder to apply a root filter to the multilist with search field

Source場では、StartSearchLocation={1C0685BF-FBF9-447B-8FC9-6758ECAE42CD}に入ります。

その後、マルチリストフィールドでコンテンツを検索しても、結果はフォルダの内容に限定されます。

A root filter is applied to a multilist with search field in the Content Editor

ソーティング

デフォルトでは、マルチリストフィールドのアイテムは更新された時間に基づいて昇順に並べ替えられ、最も最近更新されたアイテムが検索結果の最後に表示されます。 SortFieldクエリを使って、アイテム名、作成日、カスタムフィールドなどの条件に基づいて検索結果の異なるソート順を定義できます。

例えば、タイトル順に商品を並べ替えるには、以下の形式を使用します。

SortField=Title[desc]
注記

SortFieldクエリを適用すると、指定されたフィールドに値がない項目も検索結果に表示されますが、指定された条件でソートされません。

SortFieldクエリで指定されたフィールドがトークン化されている場合、ソートが期待通りに動作しないことがあります。カスタムフィールドや一部のシステムフィールド(例えば_name)はトークン化されています。

このようなフィールドがソート機能に影響を与えるのを防ぐために:

  1. 関連するフィールドがトークン化されていないか確認するために、Sitecore構成内のsitecore/contentSearch/indexConfigurations/defaultSolrIndexConfiguration/fieldMap/fieldNamesノード内でパッチファイルを用いてstringリターンタイプで定義してください。以下の例に示されています。

    <fieldMap type="Sitecore.ContentSearch.SolrProvider.SolrFieldMap, Sitecore.ContentSearch.SolrProvider">
        <fieldNames hint="raw:AddFieldByFieldName">
            <field fieldName="<your sort field name>" returnType="string"/>
            ...
        </fieldNames>
        ...
    </fieldMap>
  2. sitecore_master_indexを再建しろ。

テンプレートフィルター

利用可能なアイテムは特定のテンプレートまたはテンプレートセットに基づくものに制限されます。これにより、関連する種類のアイテムのみが表示されることが保証されます。このフィルターは、例えばテンプレートを含めたり除外したりするためにLuceneクエリ構文を使用しています。

TemplateFilter=+template:{GUID5}

パイプ文字(|)で区切られた複数のテンプレートを指定することができます。例えば:

TemplateFilter={D30C282C-4340-40BC-A287-813A6F8BFECB}|{B2A9687C-2A5B-4E3A-B92B-DE01982FBBB5}

ページサイズ

マルチリストフィールドの1ページに表示されるアイテムの数を制限します。

例えば:

PageSize=3

カスタムクエリ

フィルタリング用の様々なアイテムプロパティを使ってカスタムクエリを定義できます。これにより、複雑な検索条件の定義に柔軟性が生まれ、アイテムフィールドやメタデータをSitecore内で直接活用できます。

例:

StartSearchLocation={1C0685BF-FBF9-447B-8FC9-6758ECAE42CD}&TemplateFilter={D30C282C-4340-40BC-A287-813A6F8BFECB}&PageSize=2

この例では、StartSearchLocationTemplateFilterPageSizeパラメータを1つのクエリにまとめています。

フィルター

大きなリストから特定のアイテムを絞り込むには、Filterパラメータを使えます。クエリでパイプ記号(|)を使うことでフィルターを組み合わせることができます。選択可能なアイテムのリストを絞り込むためのさまざまなフィルターがあります。フィルターの前にプラスまたはマイナス記号を使って、フィルターされた内容を含みたり除外したりすることもできます。例えば、Filter=-_name:*cafeを指定すると、名前にcafeを含むすべての項目が除外されます。

以下は、よく使えるフィルターの例付きリストです:

  • Item name - アイテム名でフィルタリングする。以下の例では、テキスト文字列の前後にアスタリスクがワイルドカードとして使われ、名前がcafeを含む項目がマルチリストフィールドに表示されます。

    Filter=_name:*cafe*
  • Template name - アイテムを基にしたテンプレートでフィルタリングする。パイプ記号を使うことで複数のテンプレートを指定することができます:

    Filter=_templatename:Content|_templatename:Page
  • Location - コンテンツツリー内の位置でアイテムをフィルタリングする。パイプ記号を使って複数の場所を指定することができます:

    Filter=location:/sitecore/content/Tea|/sitecore/content/Coffee Brand
  • Language - 項目を言語バージョンでフィルタリングする。パイプ記号を使うことで複数の言語コードを指定できます:

    Filter=_language:zh-CN|_language:da

フルテキストクエリ

アイテム内容にマッチする全文検索クエリを指定します。例えば:

FullTextQuery=SampleText

言語

結果を特定の言語に限定します。例えば:

Language=english

SearchInCurrentLanguageOnly

返すかどうかを決めるブール条件が現在の言語を生成します。例えば:

SearchInCurrentLanguageOnly=true
この記事を改善するための提案がある場合は、 お知らせください!