カスタム検索タイプにハイライトを追加してください

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

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

Solrのハイライト機能では、クエリ応答のhighlightingセクションに断片を含めることができます。

特定のフィールドでハイライトを有効にし、その後カスタム検索タイプにHighlightsタイププロパティを追加することで、カスタム検索タイプにハイライトを追加できます。

ハイライトを加えると:

  1. <SOLR_DIR>\server\solr\<SOLR_CORE_NAME>\confフォルダのmanaged-schemaファイルで、目的のフィールドのstoredプロパティをtrueに設定してハイライトを有効にします。以下の例に示されています。

  2. カスタムサーチタイプクラスを作成し、Highlights型を返すパブリックプロパティを追加し、各プロパティを適切なインデックスフィールドにマッピングします。以下の例に示されています。

    public class SimpleHighlightResultItem { IgnoreIndexField public string Title { get; set; }

    IndexField("title") public Highlights HighlightsInTitle { get; set; }

    IgnoreIndexField public string Text { get; set; }

    IndexField("text") public Highlights HighlightsInText { get; set; } }

  3. LINQクエリではカスタム検索タイプを使いましょう。例えば:

    var index = ContentSearchManager.GetIndex("sitecore_master_index");

    using (var context = index.CreateSearchContext()) { var result = context.GetQueryable() .Where(it => it.Title == "Sitecore" && it.Text == "customer experience") .WithHighlights(hl => hl.HighlightOn(i => i.HighlightsInText));

    foreach (var resultItem in result) { string highlightSegments = resultItem.HighlightsInText.ToArray(); } }

    前のLINQクエリは以下のSolrクエリを生成します: q=(title_t:("Sitecore") AND text:("customer experience")) ... &hl=true&hl.fl=text

    highlightSegmentsの性質は以下のセグメントを含みます。

    " complexity that has previously held marketers back, the latest version of Sitecore makes customer experience"

LINQクエリで複数のフィールドをハイライトする

単一のLINQクエリで複数のインデックスフィールドのマッチをハイライトできます。

以下のクエリは、titleおよびtextインデックスフィールドの両方でハイライトを返します。

var result = context.GetQueryable() .Where(it => it.Title == "Sitecore" && it.Text == "customer experience") .WithHighlights(hl => hl .HighlightOn(i => i.HighlightsInText) .HighlightOn(i => i.HighlightsInTitle) ) .ToArray();

前のLINQクエリは以下のSolrクエリを生成します: q=(title_t:("Sitecore") AND text:("customer experience")) ... &hl=true&hl.fl=title_t,text

HighlightsInTextの性質は以下のセグメントを含みます。

" complexity that has previously held marketers back, the latest version of Sitecore makes customer experience"

HighlightsInTitleの性質は以下のセグメントを含みます。

"Sitecore Experience Platform"

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