使用 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 有时不会出现
ShingleFilterFactory 影响 Solr 中突出显示部分的大小