在构建指数时提升Lucene条款

epe*_*leg 6 lucene indexing synonym

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

例如,考虑一个同义词过滤器:
doc 1:"这是一辆好车"
doc 2:"这是一辆不错的车"

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

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

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

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

谢谢

mil*_*lan 4

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

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