2012-01-16 45 views
6

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

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

我想术语车辆添加到第一个文档和术语车到第二个文档, ,但我希望如果后来指数与汽车的话,那么第一个文件将得分高于第二个,如果查询车辆将是另一种方式。

在将字段添加到它们各自的文档之前,在字段上调用setBoost是否有用?

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

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

感谢

回答

4

设置在申请提振影响该领域的所有条款,以便这不会工作你的情况。

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

+0

谢谢,我会尝试寻找一个基于你在这里提到的类和方法的例子。 – epeleg 2012-01-17 07:58:59

+0

是否也可以将这些有效负载提升仅限于特定字段中的术语(例如“标签”)? – RalfB 2014-10-27 12:39:05