1

我正在寻找通过 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”进行搜索,我看到 audi 有六个搜索数据,jcb 有一个数据,但 jcb 数据排在最前面....我只是不明白为什么。我想在顶部显示那些将具有最大搜索结果的数据。因为那是改变代码有点像

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

我通过升序搜索,但仍然没有以我想要的方式获得结果....audi 数据没有排在首位。所以请指导我在我的代码中包含哪些内容,因为结果这些数据将在搜索结果集中出现最多。请指导我谢谢。

4

1 回答 1

0

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

在不了解您的数据集的情况下,我很难说出为什么 jcb 文档的得分超过了 audi 文档。如果就您的文档中关键字的出现而言,其他所有条件都相同,我猜想 jcb 是一个比 audi 少见的术语。频率较低的术语权重较高,因为如果您碰巧匹配一个罕见的术语,它们更有可能是您正在寻找的内容。

使用 2 种不同类型获得相同结果的问题可能是我能想到的两件事。一个是你的某种错误。两个是如果所有结果都具有相同的分数。

你能检查你的结果的分数吗?

于 2012-07-07T20:25:37.267 回答