gpt4 book ai didi

java - 在 Lucene 中,我可以搜索一个索引但使用另一个索引中的 IDF 吗?

转载 作者:行者123 更新时间:2023-11-30 05:05:25 24 4
gpt4 key购买 nike

我正在构建一个系统,我只想显示过去几天索引的结果。此外,如果我只想返回几天的结果(数千个文档),我不想维护包含一百万个文档的巨型索引。

另一方面,我的系统严重依赖索引中存储的文档中术语的出现具有实际分布(因此:实际 IDF)。

也就是说,我想使用一个小索引来返回结果,但我想使用来自更大索引(甚至外部源)的 IDF 来计算文档分数。

Similarity API 似乎不允许我这样做。 idf 方法不接收正在使用的术语作为参数。

另一种可能性是使用 TrieRangeQuery 来确保显示的文档是在最近几天内的。再说一遍,我不想维护更大的索引。而且这种查询并不便宜。

最佳答案

您应该能够扩展 IndexReader 并重写 docFreq() 方法以提供您想要的任何值。该实现可以做的一件事是打开两个 IndexReader 实例——一个用于小索引,一个用于大索引。除了 docFreq() 委托(delegate)给大索引之外,所有方法都委托(delegate)给小 IndexReader。您需要缩放返回的值,即

int myNewDocFreq = bigIndexReader.docFreq(t) / bigIndexReader.maxDoc() * smallIndexReader.maxDoc()

关于java - 在 Lucene 中,我可以搜索一个索引但使用另一个索引中的 IDF 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com