gpt4 book ai didi

lucene - 在 Solr/Lucene 中删除低于某个分数阈值的结果?

转载 作者:行者123 更新时间:2023-12-04 00:59:25 24 4
gpt4 key购买 nike

如果结果低于某个分数阈值,solr/lucene 中是否有内置功能来过滤结果?假设我提供的分数阈值为 0.2,那么所有分数小于 0.2 的文档都将从我的结果中删除。我的直觉是,这可以通过更新/定制 solr 或 lucene 来实现。

你能指出我如何做到这一点的正确方向吗?

提前致谢!

最佳答案

您可以编写自己的收集器,该收集器会忽略收集评分员放置在您的阈值以下的那些文档。下面是一个使用 Lucene.Net 2.9.1.2 和 C# 的简单示例。如果您想保留计算出的分数,则需要修改示例。

using System;
using System.Collections.Generic;
using Lucene.Net.Index;
using Lucene.Net.Search;

public class ScoreLimitingCollector : Collector {
private readonly Single _lowerInclusiveScore;
private readonly List<Int32> _docIds = new List<Int32>();
private Scorer _scorer;
private Int32 _docBase;

public IEnumerable<Int32> DocumentIds {
get { return _docIds; }
}

public ScoreLimitingCollector(Single lowerInclusiveScore) {
_lowerInclusiveScore = lowerInclusiveScore;
}

public override void SetScorer(Scorer scorer) {
_scorer = scorer;
}

public override void Collect(Int32 doc) {
var score = _scorer.Score();
if (_lowerInclusiveScore <= score)
_docIds.Add(_docBase + doc);
}

public override void SetNextReader(IndexReader reader, Int32 docBase) {
_docBase = docBase;
}

public override bool AcceptsDocsOutOfOrder() {
return true;
}
}

关于lucene - 在 Solr/Lucene 中删除低于某个分数阈值的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871558/

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