2016-06-20 4 views
0

おはようございますSolrNetによるSolr 5.4.1の強調表示

私はブレークポイントを保持して結果を確認することができました。ハイライト

マイビューモデル

[SolrField("health_content_t")] 
    public string HealthContent { get; set; } 

    [SolrField("description_t")] 
    public string Description { get; set; } 

    [SolrField("title_t")] 
    public string Title { get; set; } 

    [SolrField("_fullpath")] 
    public string PageUrl { get; set; } 

マイコントローラー

var queryOption = new QueryOptions 
      { 
       FilterQueries = BuildFilterQueries(parameters), 
       Rows = parameters.PageSize, 
       Start = start, 
       SpellCheck = new SpellCheckingParameters 
       { 
        Collate = true 
       }, 
       Highlight = new HighlightingParameters 
       { 
        Fragsize = 250, 
        Fields = new[] { "*" }, 
        BeforeTerm = "<b>", 
        AfterTerm = "</b>", 
        Snippets = 1 
       } 

      }; 

var results = _searchResults.Query(BuildQuery(parameters), queryOption); 

view = new SearchView 
{ 
     EntireSiteResults = results, 
     Search = parameters, 
     TotalCount = results.NumFound, 
     DidYouMean = GetSpellCheckingResult(results) 
}; 

マイビュー

@foreach (var item in Model.EntireSiteResults) 
    { 
     <li> 
      <h2><a href="@item.PageUrl">@item.Title</a></h2> 
      <span class="sr-url"><a href="@item.PageUrl">@item.PageUrl</a></span> 
      <p>@item.Description</p> 
     </li> 
    } 

私は結果を反復処理する方法を確認していません。私は、太字の検索用語で、また、私はこれらの各フィールドについてresults.Highlightsを反復処理するために持っているよう

が見える太字の検索用語とhealthContentのスニペットを示し、

タイトル、PAGEURLを表示しなければならないでしょうか?

どれ指導してください

答えて

1

[注:この質問は、もともとのGitHubに投稿されましたが、私は取ることを示唆するので、追加の回答について]あなたがハイライト表示し、その上に使用することを指定するために最初に持って

フィールド。 *は「良い」ですが、ハイライトしたくないフィールドがたくさんあり、qfにもよります。しかし、いずれにしても、次のようにする必要があります。

QueryOptionsで強調表示パラメータを設定して.Query()に渡します。結果が得られたら、ハイライトなしでTitle、PageUrl、およびDescriptionを取得します。ユニークなキーをキーにしたハイライトオブジェクトを反復処理し、探しているハイライトフィールドを抽出する必要があります。これが混乱している場合は、(var results = ...)を照会した直後に行にブレークポイントを置き、結果を検査します。ハイライト。

あなたはドキュメントページに示されているようにあなたが反復可能な結果持っていたら:

foreach (var h in results.Highlights[results[0].Id]) { 
    Console.WriteLine("{0}: {1}", h.Key, string.Join(", ", h.Value.ToArray())); 
} 

をあなたがスニペットある各結果を見ることができるハイライトを反復しながら、IDが一意になりますキー。次に、それぞれhには、h.Keyが探しているフィールド、つまりタイトルであるKeyValuePairが表示されます。 h.Valueは、多くの場合に返されるスニペットのリストです。あなたが最初のものを手に入れたら、あなたは大丈夫でしょう。

参考のため https://github.com/mausch/SolrNet/blob/master/Documentation/Highlighting.md

関連する問題