lucene.net搜索&通过hit.score c#命令搜索结果

时间:2012-07-07 19:29:38

标签: c# lucene.net

我正在寻找lucene.net搜索索引数据的代码。我从这个网址获得了一个代码 http://www.eggheadcafe.com/tutorials/csharp/c69ef65f-e3c6-409e-ab97-168897c74f83/lucenenet-indexing-searching-entry-level-tutorial.aspx

这是一个小样本代码。

List<SearchResult> list = new List<SearchResult>();
SearchResult sr = null;
for (int i = 0; i < results; i++)
{
    sr = new SearchResult();
    Document doc = hits.Doc(i);
    float score = hits.Score(i);
    sr.Id = int.Parse(doc.Get("id"));
    sr.Score = score;
    sr.Description = doc.Get("Description");
    sr.Title = doc.Get("Title");
    sr.Link = doc.Get("Link");
    list.Add(sr);
}
//sort by score
list = list.OrderByDescending(x => x.Score).ToList();

有一件事我不清楚 hit.score是什么? 为什么结果集按 hit.score 按降序排序?

我通过上面的代码搜索索引,代码正在运行。我输入“audi jcb”进行搜索,我看到6个搜索数据用于录音,一个数据用于jcb,但jcb数据排在最前面....我只是不明白为什么。我想在顶部显示那些具有最大搜索结果的数据。因为这是改变代码位像

list = list.OrderBy(x => x.Score).ToList();

我按升序搜索,但仍然没有按照我想要的方式得到结果......奥迪数据并未排在最前面。因此,指导我在我的代码中包含哪些内容,这些数据位于顶部,最大限度地出现在搜索结果集中。请指导我,谢谢。

1 个答案:

答案 0 :(得分:0)

分数是文档与查询相关性的指标。分数越高,文档相关的可能性越大。

我很难说为什么jcb文档在不了解您的数据集的情况下超出了audi文档。如果所有其他条件都与文档中关键字的出现相同,我猜想jcb在一个术语中不像audi那么常见。频率较低的术语的权重较高,因为如果您恰好匹配罕见的术语,它们更有可能成为您所寻找的。

使用2种不同的排序获得相同结果的问题可能是我能想到的两件事。你可能会遇到某种错误。如果所有结果都有相同的分数,那么两个就是。

您可以查看结果的分数吗?