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
プロパティはこのスコアを尊重しますか?