如何仅返回SOLR中字段的截断部分?

时间:2010-08-10 19:27:55

标签: solr

我在SOLR中有一个非常大(5000+个字符)的文本字段,名为描述。到目前为止,它非常适合搜索和突出显示。如果我执行搜索并且没有突出显示的部分,那么我只显示前300个字符。我想做的只是返回SOLR结果中的300个字符。

我想这样做,因为在测试时,如果我返回较小的结果,我会获得更好的性能。这可能是因为XML文档较小,因此线路上的时间较少,然后处理速度更快,因为文档较小。

我想过使用刚存储前300个字符的新字段。我认为这会有效,但我想知道是否有更好或更原生的解决方案。

2 个答案:

答案 0 :(得分:7)

您正在寻找的是突出显示hl.maxAlternateFieldLength(http://wiki.apache.org/solr/HighlightingParameters#hl.maxAlternateFieldLength)。

您需要将字段定义为自己的备用字段。如果要突出显示字段Description,则突出显示查询参数将为:

hl=true
hl.fl=Description
f.Description.hl.alternateField=Description
hl.maxAlternateFieldLength=300

最后,要从查询结果中省略Description字段,您必须将其从fl查询参数中排除:

fl=score,url,title,date,othermetadata

答案 1 :(得分:0)

使用Unified Highlighter时,hl.alternateField不能用作查询参数。相反,您可以使用hl.defaultSummary查询参数(从Solr 4.5开始可用)

  

hl.defaultSummary
  如果为true,则如果不能正确生成突出显示的代码段,请使用文本的开头作为代码段。默认值为false。