如何在特定字段中突出显示特定术语?
例如,设想以下查询:
completePendingCommand
,我要实现的是在所有字段中突出显示foo TITLE("bar")
,仅在字段foo
中突出显示bar
。
直到现在,以下内容均无效:
TITLE
注意:在上面的示例中,q=<TITLE_field_internal_name>:"bar"hl.fl=&&hl.requireFieldMatch=true
已正确地重新映射到solr字段。
答案 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
字段中,它们之间则用+
隔开。