我正在寻找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();
我按升序搜索,但仍然没有按照我想要的方式得到结果......奥迪数据并未排在最前面。因此,指导我在我的代码中包含哪些内容,这些数据位于顶部,最大限度地出现在搜索结果集中。请指导我,谢谢。
答案 0 :(得分:0)
分数是文档与查询相关性的指标。分数越高,文档相关的可能性越大。
我很难说为什么jcb文档在不了解您的数据集的情况下超出了audi文档。如果所有其他条件都与文档中关键字的出现相同,我猜想jcb在一个术语中不像audi那么常见。频率较低的术语的权重较高,因为如果您恰好匹配罕见的术语,它们更有可能成为您所寻找的。 p>
使用2种不同的排序获得相同结果的问题可能是我能想到的两件事。你可能会遇到某种错误。如果所有结果都有相同的分数,那么两个就是。
您可以查看结果的分数吗?