Lucene的热门歌曲是否排名文件?

时间:2011-10-30 02:11:13

标签: c# asp.net lucene.net

这是我的代码:

 string word = txtQuery.Text;
 IndexReader reader = IndexReader.Open("e:/indexDir");   
 IndexSearcher searcher = new IndexSearcher(reader);   
 QueryParser parser = new QueryParser("Content", new StandardAnalyzer());
 Query query = parser.Parse(word);
 Hits hits = searcher.Search(query);
 int hitCount = hits.Length();
 Response.Write("searcher order--------------</br>");

 for (int temp = 0; temp < hitCount; temp++)
 {
    Response.Write(searcher.Doc(temp).Get("Content") + "</br>");       
 }

 Response.Write("hits order--------------</br>");

 for (int i = 0; i < hitCount; i++)
 {
    Document doc = hits.Doc(i);
    Response.Write( doc.Get("Content") + "</br>");
    Response.Write("Score-----" + hits.Score(i)+"Doc id---"+hits.Id(i)+ "</br>");
 }

我在这里发现的是,搜索者的文档顺序只是读者阅读的方式......

但点击文档顺序是基于文档的分数...

这就是我们所说的“排名文件”???

1 个答案:

答案 0 :(得分:0)

<强> What I found here is that the searcher's document order is simply how it is read by the reader...But the hits documents order is on the basis of the score of the document

不,这与“排名文档”无关。 searcher.DocindexReader.Doc的包装器。你在第一个循环中所做的只是阅读索引(索引中的前N个文档),而不是搜索结果。

for (int i= 0; i < N ; i++)
{
    Response.WriteLine(searcher.Doc(i).Get("Content"));       
}

即使您没有拨打searcher.Search,您的第一个循环也会起作用。

如果检查两个循环的输出,您将看到它们实际上包含不同的文档。

hits.Doc(n) 在结果列表中返回第n个文档,而 searcher.Doc(n) 在索引中返回第n个文档


现在您的问题 Do the hits in Lucene rank the documents?

在Lucene.Net中,默认情况下,搜索结果按score排序(如果您不提供排序字段)。