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());
            }
        }
    }

对此的任何帮助将不胜感激,

谢谢

4

2 回答 2

2

您可以检查hl.fragmentsBuilder它将允许您返回不同颜色的片段。我只是不确定它是否适用于搜索词、匹配项或字段。

于 2013-01-02T08:55:11.753 回答
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。

于 2013-01-02T08:59:34.900 回答