6

在创建索引时(而不是在查询时)是否可以确定特定术语比其他术语更重要?

例如,考虑一个同义词过滤器:
doc 1: "this is a nice car"
doc 2: "this is a nice vehicle"

我想将术语车辆添加到第一个文档并将术语汽车添加到第二个文档,但我希望如果稍后使用单词 car 查询索引,则第一个文档的得分将高于第二个文档,如果查询车辆将是相反的方式。

在将字段添加到各自的文档之前对字段调用 setBoost 会起作用吗?

或者也许我应该将同义词添加到不同的字段名称?

还是我从错误的角度看待这个问题?

谢谢

4

1 回答 1

4

在归档上设置提升会影响该字段中的所有术语,因此这在您的情况下不起作用。

但它应该可以使用 Lucene 有效负载(可以为每个术语设置的字节数组)。您可以使用它们来设置特定术语的提升(例如,对于 doc 1,车辆为 0.5)。然后,您将实现自己的Similarity覆盖scorePayload()方法来解码该提升,然后使用PayloadTermQuery它允许您根据您在该术语的有效负载中拥有的靴子为分数做出贡献。

于 2012-01-16T13:20:05.507 回答