【发布时间】:2017-12-31 14:30:54
【问题描述】:
伙计们,
我正在进行一些与排名相关的研究。我想用 Lucene 索引一组文档,获取它生成的(每个文档的)tfidf 表示,改变它们,将它们放回原处,并观察一组固定查询的排名如何相应地变化。
有没有什么简单的方法可以做到这一点?
【问题讨论】:
标签: lucene full-text-search tf-idf
伙计们,
我正在进行一些与排名相关的研究。我想用 Lucene 索引一组文档,获取它生成的(每个文档的)tfidf 表示,改变它们,将它们放回原处,并观察一组固定查询的排名如何相应地变化。
有没有什么简单的方法可以做到这一点?
【问题讨论】:
标签: lucene full-text-search tf-idf
你的问题太模糊了,有一个明确的答案,尤其是你打算做什么:
获取它生成的TFIDF表示(每个文档),更改它们
Lucene将原始值存储在:
所有这些数据由Lucene管理,并将用于计算给定查询项的分数。自定义Similarity class可用于更改生成此分数的公式。
但您必须考虑搜索查询是由多个术语进行的,并且组合各个术语的分数也可以改变。您可以使用现有的查询类(例如BooleAnquery,DisjunctionMax),但您也可以写自己的。
所以它真的取决于你想要的一切,但请注意,如果要更改Lucene存储的原始值,则会变得相当困难。您必须编写自定义Lucene编解码器,并且可能是大多数查询堆栈,以利用您的新数据。
您应该考虑的一个很好的事情是存储任意字节[]有效载荷的可能性。这样,您可以存储将在Lucene之外计算的值并在自定义相似性或查询中使用它。 请参阅以下教程:Getting Started with Payloads和Custom Scoring with Lucene Payloads它愿你给一些想法。
【讨论】: