---
title: "カスタム検索タイプにハイライトを追加してください"
slug: "add-highlighting-to-a-custom-search-type"
abstract: "カスタム検索タイプにハイライトを追加する方法を説明します。"
---
# カスタム検索タイプにハイライトを追加してください

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

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

ハイライトを加えると:

1.  <SOLR\_DIR>\\server\\solr\\<SOLR\_CORE\_NAME>\\confフォルダのmanaged-schemaファイルで、目的のフィールドのstoredプロパティをtrueに設定してハイライトを有効にします。以下の例に示されています。
    
    <field name="title\_t" type="text\_general" multiValued="true" indexed="true" stored="true"/>
    <field name="text" type="text\_general" multiValued="true" indexed="true" 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<SimpleHighlightResultItem>()
     .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 <em>Sitecore</em> makes <em>customer</em> <em>experience</em>"
    

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

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

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

var result = context.GetQueryable<SimpleHighlightResultItem>()
 .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 <em>Sitecore</em> makes <em>customer</em> <em>experience</em>"

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

"<em>Sitecore<em> Experience Platform"