solr可以用两种不同颜色突出显示两个不同的搜索词吗?

时间:2013-01-02 08:39:56

标签: solr solrnet

我是solr的新手,并被要求实施搜索结果突出显示。我的搜索查询是这样的,

query = text '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());
            }
        }
    }

非常感谢任何帮助,

由于

2 个答案:

答案 0 :(得分:2)

您可以查看hl.fragmentsBuilder,这样您就可以返回不同颜色的代码段。我不确定它是否适用于搜索字词,匹配或字段。

答案 1 :(得分:0)

您可以将以下参数设置为requestHandler中的solrconfig.xml定义,以突出显示不同的颜色。您可以根据需要设置背景颜色。

   <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.