2013-01-02 65 views
1

我是solr的新手,並被要求執行搜索結果突出顯示。我的搜索查詢是這樣,可以用兩種不同的顏色突出顯示兩個不同的搜索詞嗎?

查詢=文字像'searchterm1''searchterm2'

現在我需要指示Solr的突出'searchterm1''searchterm2'黃色藍色顏色分別。這甚至可能與solr有關嗎?如果是的話我該怎麼辦?

這是當前突出顯示搜索結果的代碼片段。

private AbstractSolrQuery _query = new SolrQuery(searchterm1) && new SolrQuery(searchterm2); 

    public SolrQueryResults<Document> Execute(string defaultField) 
    { 
     var results = _solr.Query(_query, new QueryOptions 
     { 
      Rows = 100, 
      Fields = Document.GetPropertiesExceptList(new List<string>{"text","text_exact"}).ToArray(), 
      ExtraParams = new Dictionary<string, string> { 
        { "df", defaultField }, 
        { "hl.fragsize", "0" }, 
        { "hl", "true" } 
      } 
     }); 

     Highlight(results); 
     return results; 
    } 

    private void Highlight(SolrQueryResults<Document> results) 
    { 
     foreach (var result in results) 
     { 
      foreach (var highlightedSnippet in results.Highlights[result.Id.ToString()]) 
      { 
       result.SetProperty("content", highlightedSnippet.Value.ToList()); 
      } 
     } 
    } 

任何幫助,這將是非常讚賞,

感謝

+0

你好,我一直在努力實現相同的,但它不是爲我工作。我嘗試了Jayendra的解決方案,但無法獲得理想的結果。你能不能讓我知道你是怎麼做到的。 謝謝 – user199354

回答

2

您可以檢查在hl.fragmentsBuilder,讓您在不同的顏色返回片段。我只是不確定它是否適用於搜索字詞,匹配或字段。

0

您可以在solrconfig.xml中的requestHandler定義中設置以下參數以突出顯示不同的顏色。您可以根據需要設置背景顏色。

<str name="hl.simple.pre">&lt;b style="background:yellow"&gt;</str> 
    <str name="hl.simple.post">&lt;/b&gt;</str> 

完整的例子requestHandler可能是這樣的:

<requestHandler name="/select" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <int name="rows">10</int> 
     <str name="df">text</str> 

    <!-- Highlighting defaults --> 
     <str name="hl">on</str> 
     <str name="hl.fl">*</str> 
     <str name="hl.simple.pre">&lt;b style="background:yellow"&gt;</str> 
     <str name="hl.simple.post">&lt;/b&gt;</str> 
    </lst> 
    </requestHandler> 

有關詳細信息,您可以檢查HighlightingParameters.

相關問題