是否可以设置在Lucene中返回结果的最低分数?Lucene.net/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个'。
我的问题是,匹配的门槛非常低。如果用户输入“会计师”,则搜索返回有意义的结果,但是如果他们输入“adasdfsdf”,则返回不相关的结果。如果结果不够相关,我宁愿显示“抱歉,没有公司符合您的查询”等消息。
是否可以设置比赛的最低分数? TopDocs.TotalHits
物业会尊重这个分数吗?
你说得对,有查询更多条款 - 像类别和说明的东西。尽管如此,我不明白为什么我仍然会遇到大量不相关的结果。我会尝试阅读lucene使用的算法。 – Oliver