Solr-如何突出显示特定字段中的特定术语

时间:2018-10-26 06:57:48

标签: solr lucene highlight

如何在特定字段中突出显示特定术语?

例如,设想以下查询:

completePendingCommand

,我要实现的是在所有字段中突出显示foo TITLE("bar") ,仅在字段foo中突出显示bar

直到现在,以下内容均无效:

TITLE

注意:在上面的示例中,q=<TITLE_field_internal_name>:"bar"hl.fl=&&hl.requireFieldMatch=true 已正确地重新映射到solr字段。

2 个答案:

答案 0 :(得分:1)

大多数突出显示参数支持按字段参数语法:

f.TITLE.hl.<parameter>

由于您的语法不是有效的Solr语法,并且不可能知道TITLE("bar")引用了一个名为TITLE的字段,因此您必须自己提取(或提供)元数据。

如果您要查询其他字段,而只想突出显示在这些字段中命中的术语(即,如果您的查询曾经是title:bar,则只能在字段bar中搜索title ),则不必使用每个字段设置,而可以将hl.requireFieldMatch设置为true

  

默认情况下为false,无论解析查询引用的是哪个字段,所有要突出显示的每个字段(hl.fl)的所有查询词。如果设置为true,则将仅突出显示与突出显示的字段对齐的查询字词。

     

注意:如果查询引用的字段与突出显示的字段不同,并且它们具有不同的文本分析,则查询可能不会突出显示应具有的查询词,反之亦然。使用的分析是突出显示的字段(hl.fl),而不是查询字段。

答案 1 :(得分:0)

最后,经过多次尝试和错误,我设法使此功能正常工作以下是一些摘要:

fq=(_query_:"{!edismax+qf%3D'container_title_en'+v%3D'hormones'}"+OR+_query_:"{!edismax+qf%3D$fqf+v%3D'cancer'}")

fqf=authors_tnss+etc+etc+...

hl.q=(_query_:"{!edismax+qf%3D'container_title_en'+v%3D'hormones'}"+OR+_query_:"{!edismax+qf%3D$fqf+v%3D'cancer'}")

hl.fl=id,external_id_s,etc,etc,...

hl.requireFieldMatch=true

,请注意,如果hl.fl字段之间用,隔开,而在fqf中我的自定义fq字段中,它们之间则用+隔开。