【发布时间】:2017-05-26 13:08:50
【问题描述】:
索引时间字段提升(field.setBoost(boost))和查询时间提升(query.setBoost(boost))有什么区别
Lucene 的常见问题解答似乎与 javadoc 冲突。 (Lucene 4.9.0)
FAQ:
索引时间字段提升 (field.setBoost(boost)) 是一种表达诸如“此文档的标题价值是大多数文档的标题的两倍”之类的方式。查询时间提升 (query.setBoost(boost)) 是一种表达“我关心查询的这个子句的匹配是我关心查询的其他子句匹配的两倍”的一种方式。
如果在每个文档上都设置索引时间字段提升,则毫无价值。
Lucene 允许通过在不同时间“提升”来影响搜索结果:
通过在将文档添加到索引之前调用 Field.setBoost() 来提升索引时间。 通过在查询子句上设置提升,调用 Query.setBoost() 来提升查询时间。 为提高存储效率对索引时间提升进行了预处理,并将其写入字段的存储,如下所示:
通过测试,FAQ 是错误的。在所有文档上设置相同的索引时间字段提升确实会影响评分。
javadoc 听起来像索引时间字段提升和查询时间提升对评分有完全相同的影响。这是真的吗?
【问题讨论】:
标签: lucene