当多个具有相同名称的字段具有不同的提升时会发生什么?

时间:2018-12-12 23:17:22

标签: lucene

Boost is by-Field in Lucene,然后在索引中进行设置。您可以将“名称”属性设置为相同的值添加多个字段,然后将在该文档中搜索它们,就像您刚刚在该字段名称下向这些文档中添加了这些术语的并集一样。

var field1 = new Field("Text", "aquaculture");
var field2 = new Field("Text", "fish");
field1.setBoost(1.0f);
field2.setBoost(2.0f);
var doc = new Document();
doc.AddField(field1);
doc.AddField(field2);

但是您可以同时将Boost设置为多个值-如果这样做,会发生什么?是将每个字段中的条款设置为单独的Boost级别,还是使用一个共享的Boost级别?如果是,是后进先出随机吗?

(上面的代码是伪代码,只是为了说明将字段添加到单个Doc中以帮助程序员可视化它,我意识到执行上述操作的实际代码与实际的Lucene API有所不同)

1 个答案:

答案 0 :(得分:2)

对于当前版本的Lucene,此问题不再重要。在6.5中弃用了对字段设置增强的功能,而在7.0中不再支持。参见LUCENE-6819进行讨论。根据{{​​3}}:

  

...索引时间得分因子应在doc值字段中建立索引,并在查询时使用FunctionScoreQuery与得分相结合。


在以前的版本中,如果将多个增强添加到同一字段,则它们将相乘。由migration guide指定,它是传递给相似性的信息,该相似性将数据转换为存储在索引中的数据。

  

这是共享相同字段名称的所有字段实例的文档增强和字段增强的累积乘积。