Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene索引时间字段增加vs查询时间增加_Lucene - Fatal编程技术网

Lucene索引时间字段增加vs查询时间增加

Lucene索引时间字段增加vs查询时间增加,lucene,Lucene,索引时间字段提升(field.setBoost(boost))和查询时间提升(query.setBoost(boost)) Lucene的FAQ似乎与javadoc冲突。(Lucene 4.9.0) : 索引时间字段boost(field.setBoost(boost))是一种表达“此文档的标题值是大多数文档标题的两倍”的方式。查询时间提升(Query.setBoost(boost))是一种表达“我关心查询的这个子句上的匹配是我关心查询的其他子句上的匹配的两倍” 如果在每个文档上设置索引时间字段

索引时间字段提升
(field.setBoost(boost))
和查询时间提升
(query.setBoost(boost))

Lucene的FAQ似乎与javadoc冲突。(Lucene 4.9.0)

:

索引时间字段boost(field.setBoost(boost))是一种表达“此文档的标题值是大多数文档标题的两倍”的方式。查询时间提升(Query.setBoost(boost))是一种表达“我关心查询的这个子句上的匹配是我关心查询的其他子句上的匹配的两倍”

如果在每个文档上设置索引时间字段提升,那么它们就毫无价值

:

Lucene允许在不同时间通过“提升”来影响搜索结果:

在将文档添加到索引之前,通过调用Field.setBoost()来增加索引时间。 通过在查询子句上设置一个boost,调用Query.setBoost()来提高查询时间。 索引时间提升经过预处理以提高存储效率,并按如下方式写入字段的存储:

从测试来看,常见问题是错误的。在所有文档上设置相同的索引时间字段提升不会影响评分

javadoc听起来像索引时间字段的提升和查询时间的提升对评分有着完全相同的影响。这是真的吗?

它们有(大致†)相同的效果,是的。文档的要点是,如果你提高了所有东西,那么它对得分没有任何意义。它说他们将一文不值,而不是说他们将被忽视。就像这样写一个查询:

field:one^2 field:two^2 field:three^2
这些查询时间的增加将改变分数,是的,但由于每个查询词的增加量相同,因此影响没有意义。结果的分布完全不受助推器的影响,因此它们没有实际用途

是否使用查询时间或索引时间提升取决于什么是方便的。如果某个字段值应该始终提升,则可以使用索引时间提升。如果您希望为特定的查询增加时间,那么查询时间增加是唯一有意义的事情


†大概是因为索引时间提升使用有损压缩算法存储,这有时会导致明显的精度损失。

它们(大致†)具有相同的效果,是的。文档的要点是,如果你提高了所有东西,那么它对得分没有任何意义。它说他们将一文不值,而不是说他们将被忽视。就像这样写一个查询:

field:one^2 field:two^2 field:three^2
这些查询时间的增加将改变分数,是的,但由于每个查询词的增加量相同,因此影响没有意义。结果的分布完全不受助推器的影响,因此它们没有实际用途

是否使用查询时间或索引时间提升取决于什么是方便的。如果某个字段值应该始终提升,则可以使用索引时间提升。如果您希望为特定的查询增加时间,那么查询时间增加是唯一有意义的事情


†大概是因为索引时间增量使用有损压缩算法存储,有时会导致明显的精度损失