是否可以设置在 Lucene 中返回结果的最低分数?
我有这个功能:
public Tuple<int,ICollection<Guid>> Search(string searchQuery,int maxResults)
{
var booleanQuery = new BooleanQuery();
var s1 = new TermQuery(new Term("companyName", searchQuery));
booleanQuery.Add(s1, Occur.SHOULD);
using (var searcher = new IndexSearcher(this.Directory))
{
TopDocs hits = searcher.Search(booleanQuery, maxResults);
var ids = new List<Guid>();
for (int i = 0; i < hits.ScoreDocs.Count(); i++)
{
var idString = searcher.Doc(hits.ScoreDocs[i].Doc).Get("id");
ids.Add(new Guid(idString));
}
return new Tuple<int, ICollection<Guid>>(hits.TotalHits, ids);
}
}
该函数搜索我的索引并返回与 searchQuery 匹配的公司的 ID,以及与搜索匹配的公司总数 - 因此我可以编写“显示 245 家匹配公司中的 1-20 家”。
我的问题是比赛的门槛很低。如果用户输入“accountant”,则搜索返回有意义的结果,但如果他们输入“adasdfsdf”,则返回不相关的结果。如果结果不够相关,我宁愿显示一条消息,如“抱歉,没有公司符合您的查询”。
是否可以为比赛设置最低分数?物业会TopDocs.TotalHits
尊重这个分数吗?