在创建索引时(而不是在查询时),是否可以确定特定术语比其他术语更重要?
以同义词过滤器为例:
文档 1:“这是一辆不错的车”
文档 2:“这是一辆不错的车”
我想将术语“车辆”添加到第一个文档,将术语“汽车”添加到第二个文档,
但我希望如果稍后使用单词 car 查询索引,那么第一个文档的得分将高于第二个文档,如果查询车辆,则相反。
在将字段添加到各自的文档之前调用 setBoost 会成功吗?
或者我应该将同义词添加到不同的字段名称中?
或者我是从错误的角度看这个?
谢谢
最佳答案
在归档上设置 boost 会影响该字段中的所有术语,因此这不适用于您的情况。
但是它应该可以使用 Lucene 有效负载(可以为每个术语设置的字节数组)。您可以使用它们来设置特定于术语的提升(例如,文档 1 的车辆为 0.5)。然后你将实现你自己的 Similarity
并覆盖 scorePayload()
解码该提升然后使用 PayloadTermQuery
的方法这允许您根据该术语的有效负载中的 Boot 为分数做出贡献。
关于lucene - 在构建索引时提升 Lucene 术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880396/