使用 copyField 突出显示 Solr

Posted

技术标签:

【中文标题】使用 copyField 突出显示 Solr【英文标题】:Solr Highlighting with copyField 【发布时间】:2018-04-05 20:56:13 【问题描述】:

我有一个 solr 实例,在该实例中,我在正文的索引时间使用 copyField 将其通过两个不同的分析器。我想突出显示这两个字段,所以我将两个字段都设置为stored=true。这会使索引的文本存储膨胀到我认为是重复数据的地方。

所以

1) 有没有办法将一个字段指向存储文本的其他字段?

和/或

2) 有没有更好的方法来使用不同的分析器保持突出显示?

我使用的是 solr 6.5,但可以更新到 7。

【问题讨论】:

【参考方案1】:

1) 有没有办法将一个字段指向存储文本的其他字段?

答:如果您试图将一个字段指向另一个字段的分析值,答案是否定的。您可以做的实际上就是您正在做的事情,使用 copyField 在同一输入值上拥有两个不同的分析器。

2) 有没有更好的方法来使用不同的分析器保持突出显示?

A:恐怕答案再次是否定的,至少不是 100% 匹配...您可以做的是查询一个字段并引用另一个字段(使用不同的分析器)以突出显示,使用参数 hl .fl。但正如here所说:

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

【讨论】:

谢谢。不幸的是,这是我所期待的答案。似乎文本突出显示的存储成本比我希望的要大。 我有 18 个复制字段。必须有一种方法可以从 copyField 的每个标记中引用其在原始字段中的开始/结束位置。

以上是关于使用 copyField 突出显示 Solr的主要内容,如果未能解决你的问题,请参考以下文章

solr:突出显示:hl.simple.pre/post 有时不会出现

Solr 不突出显示某些单词

ShingleFilterFactory 影响 Solr 中突出显示部分的大小

Solr突出显示多个术语

Spring Boot Solr HighlightPage 不返回突出显示的信息

Solr 突出显示停用词