给定一个查询和一个术语,我如何计算该术语在查询中每个文档中的平均位置并返回它?我正在寻找最快(性能方面)的解决方案并愿意扩展 solr 功能。
之后,我需要计算一个词在查询中所有文档中的平均位置。有了这个,我不需要将文档主题级别返回给客户 - 只是平均术语位置。
谢谢萨尔
解决方案之一是执行以下操作(大量编码 - 我不知道快捷方式,因为您需要遍历文档中的术语位置。没有内置功能可以通过函数执行此操作,但您也可能会考虑以某种方式使用有效负载)。
也许另一种选择是更改索引逻辑并在分析阶段计算这些平均值。如果您设法这样做(将其放入有效负载中),您可以在查询时间内更快地获取此信息,但这意味着开发一个复杂的分析过滤器。
如果我理解正确,您想计算为特定查询返回的文档集中一个术语的所有位置的算术平均值。
这是我能想到的。
首先,您必须在索引时启用位置信息以从索引中提取任何位置信息。
看看这个组件:术语向量组件
响应将包含计算算术平均值所需的内容。
请不要忘记在查询中指定您要查找的术语。例如:q:(field1:someExQueryIfNeeded AND field2:targetTerm)
确保您检索到您需要的最少的东西。如果您最终收到很多噪音,您始终可以将此组件自定义为Solr 插件并仅返回您需要的信息。