构建索引时提升Lucene术语的性能

6
在创建索引时(而不是查询时),是否可能确定特定术语比其他术语更重要?例如,考虑同义词过滤器:
文档1:“这是一辆漂亮的汽车”
文档2:“这是一个不错的交通工具”
我想将术语“交通工具”添加到第一个文档中,并将术语“汽车”添加到第二个文档中,但我希望如果以后使用单词“汽车”查询索引,则第一个文档的得分将高于第二个文档,如果查询“交通工具”,则情况将相反。在将它们添加到各自的文档之前,在字段上调用setBoost是否能解决问题?还是我应该将同义词添加到不同的字段名称中?或者我从错误的角度看待了这个问题?谢谢。

这是一个相当老的问题,但我也遇到了同样的情况。你还记得或者最终解决了这个问题吗?答案似乎是正确的,但我找不到一个合适的例子。提前致谢! - Lóri Nóda
1个回答

4

将一个字段设置为boost会影响该字段中的所有术语,因此这在您的情况下不起作用。

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


谢谢,我会尝试根据你在这里提到的那些类和方法寻找一个例子。 - epeleg
这些有效载荷增强是否也可以仅限于特定字段(例如“标签”)中的术语? - RalfB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接