在创建索引时是否可以确定特定术语比其他术语更重要(而不是在查询时)?
例如考虑同义词过滤器:
doc 1:“这是一辆好车”
doc 2:“这是一个很好的工具”
我想将术语vehicle添加到第一个doc,将术语car添加到第二个doc, 但是我希望如果稍后用car这个词来查询索引,那么第一个文档的得分将高于第二个文档,如果查询车辆,那将是另一种方式。
在将字段添加到各自的文档之前调用字段上的setBoost会有什么效果吗?
或者我应该将同义词添加到其他字段名称?
或者我是从错误的角度看待这个?
由于
答案 0 :(得分:4)
对某个字段设置提升会影响该字段中的所有字词,因此在您的情况下这不起作用。
但它应该是可行的使用Lucene有效载荷(可以为每个术语设置的字节数组)。您可以使用它们来设置术语特定的提升(例如,对于文档1,车辆为0.5)。然后,您将实施自己的Similarity
并覆盖scorePayload()
方法来解码该提升,然后使用PayloadTermQuery
,这样您就可以根据有效负载中的引导为分数做出贡献那个词。