カスタム検索タイプにハイライトを追加してください
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Solrのハイライト機能では、クエリ応答のhighlightingセクションに断片を含めることができます。
特定のフィールドでハイライトを有効にし、その後カスタム検索タイプにHighlightsタイププロパティを追加することで、カスタム検索タイプにハイライトを追加できます。
ハイライトを加えると:
-
<SOLR_DIR>\server\solr\<SOLR_CORE_NAME>\confフォルダのmanaged-schemaファイルで、目的のフィールドのstoredプロパティをtrueに設定してハイライトを有効にします。以下の例に示されています。
-
カスタムサーチタイプクラスを作成し、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; } }
-
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
前の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"