在构建指数时提升Lucene条款

时间:2012-01-16 13:01:19

标签: lucene indexing synonym

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

例如考虑同义词过滤器:
doc 1:“这是一辆好车” doc 2:“这是一个很好的工具”

我想将术语vehicle添加到第一个doc,将术语car添加到第二个doc, 但是我希望如果稍后用car这个词来查询索引,那么第一个文档的得分将高于第二个文档,如果查询车辆,那将是另一种方式。

在将字段添加到各自的文档之前调用字段上的setBoost会有什么效果吗?

或者我应该将同义词添加到其他字段名称?

或者我是从错误的角度看待这个?

由于

1 个答案:

答案 0 :(得分:4)

对某个字段设置提升会影响该字段中的所有字词,因此在您的情况下这不起作用。

但它应该是可行的使用Lucene有效载荷(可以为每个术语设置的字节数组)。您可以使用它们来设置术语特定的提升(例如,对于文档1,车辆为0.5)。然后,您将实施自己的Similarity并覆盖scorePayload()方法来解码该提升,然后使用PayloadTermQuery,这样您就可以根据有效负载中的引导为分数做出贡献那个词。