2017-07-25 25 views

回答

1

你的问题太模糊了,没有一个明确的答案,尤其是,你打算做什么:

拿TFIDF表示(每个文件)它产生,改变他们

Lucene的存储原始值打分:

所有这些数据是通过lucene的管理和将被用于计算给定查询术语的分数。自定义Similarity类可用于更改生成此分数的公式。

但是,您必须考虑到搜索查询是由多个术语组成的,并且单个术语的分数组合的方式也可以更改。您可以使用现有的Query类(例如BooleanQuery,DisjunctionMax),但也可以编写自己的类。

所以它真的取决于你想要做什么,但请注意,如果你想改变由lucene存储的原始值,这将是相当困难的。你将不得不编写一个自定义的lucene编解码器,可能大部分是查询堆栈,以利用你的新数据。

你应该考虑的一件好事是存储任意字节有效载荷的可能性。通过这种方式,您可以存储一个在lucene之外计算的值,并将其用于自定义相似度或查询中。 请参阅以下教程:Getting Started with PayloadsCustom Scoring with Lucene Payloads您可以提出一些建议。

+0

谢谢@nomoa。我的想法太模糊了。但是,尽管如此,使用有效载荷似乎是答案。你认为可以通过自定义有效载荷来扩展一个已经存在的索引,或者我应该在索引期间尝试添加它们吗? – nadre

+0

@nadre lucene并不真正支持更新操作,它总是一个删除+添加操作。所以我认为不值得尝试“扩展”现有的索引,只要从第一个数据集/索引计算出所需的值,就应该在第二遍索引期间添加它们。 – nomoa

+0

这就是我的想法。谢谢你的帮助! – nadre

相关问题