我有一个solr查询,我搜索(webpage_text:*test* OR company_text:*test*)
在我的突出显示中,我将字段设置为webpage_text, company_text
。但是现在我总是在突出显示结果中得到两个字段,即使搜索词仅在webpage_text中找到,我也得到了一个feature_text的高亮结果,它只是完整的字段。
是否可以仅返回匹配字段的突出显示?
我尝试过requireFieldMatch,但这不起作用。
@EDIT:可能是重要信息:2个字段实际上是由复制字段填充的空字段。这有影响吗?
<field name="company_text" type="text_general" indexed="true" stored="true" multiValued="true" default="" termVectors="true" termPositions="true" termOffsets="true"/>
<field name="webpage_text" type="text_general" indexed="true" stored="true" multiValued="true" default="" termVectors="true" termPositions="true" termOffsets="true"/>
<dynamicField name="*company_*" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*talent_*" type="string" indexed="true" stored="true" multiValued="true"/>
<copyField source="company_*" dest="company_text" maxLength="30000000"/>
<copyField source="webpage_*" dest="webpage_text" maxLength="30000000"/>
@ EDIT2:即使没有匹配,看起来复制域也总是出现在高亮显示中。
答案 0 :(得分:0)
我相信requireFieldMatch
选项是您需要使用的选项。但是,要实现此目的,您还需要启用usePhraseHighlighter
,然后通过将术语包含在引号中来确保您正在执行PhraseQueries。 (例如webpage_text:"*test*"
)
以下是一个例子:
http://localhost:8983/solr/select/q=webpage_text%3A"*test*"+OR
+company_text%3A"*test*"&wt=xml&hl=true&hl.fl=webpage_text%2Ccompany_text
&hl.simple.pre=<em>&hl.simple.post=<%2Fem>
&hl.requireFieldMatch=true&hl.usePhraseHighlighter=true
您需要根据需要调整服务器设置以及场景的其他参数。
答案 1 :(得分:0)
如果没有另外指定,Solr总是返回所有字段。字段是否包含在搜索查询中无关紧要。带有匹配的字段会突出显示。
如果您只有两个字段,则返回这两个/所有字段,并突出显示其中一个字段。