我是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());
}
}
}
非常感谢任何帮助,
由于
答案 0 :(得分:2)
您可以查看hl.fragmentsBuilder,这样您就可以返回不同颜色的代码段。我不确定它是否适用于搜索字词,匹配或字段。
答案 1 :(得分:0)
您可以将以下参数设置为requestHandler
中的solrconfig.xml
定义,以突出显示不同的颜色。您可以根据需要设置背景颜色。
<str name="hl.simple.pre"><b style="background:yellow"></str>
<str name="hl.simple.post"></b></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"><b style="background:yellow"></str>
<str name="hl.simple.post"></b></str>
</lst>
</requestHandler>
有关详细信息,请查看HighlightingParameters.