C# Lucene中的点击率对文档进行排名吗?
这是我的代码:C# Lucene中的点击率对文档进行排名吗?,c#,asp.net,lucene.net,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.Pa
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>");
}
stringword=txtQuery.Text;
IndexReader=IndexReader.Open(“e:/indexDir”);
IndexSearcher search=新的IndexSearcher(阅读器);
QueryParser parser=newQueryParser(“内容”,newStandardAnalyzer());
Query=parser.Parse(word);
Hits=searcher.Search(查询);
int hitCount=hits.Length();
回复。填写(“搜索者订单-----------------”;
对于(int-temp=0;temp”;
}
响应。写入(“点击订单-----------------”;
对于(int i=0;i”;
响应。写入(“分数------”+点击率分数(i)+“文档id”--“+点击率id(i)+””;
}
我在这里发现的是,搜索者的文档顺序只是读者如何阅读它
但是hits文件的顺序是基于文件的分数
那么这就是我们所说的“文档排名”?
我在这里发现的是,搜索者的文档顺序仅仅是读者阅读文档的方式……但hits文档顺序是基于文档得分的
不,这与“文件排名”无关searcher.Doc
是indexReader.Doc
的包装器。在第一个循环中,您所做的只是读取索引(索引中的前N个文档),而不是搜索结果
for (int i= 0; i < N ; i++)
{
Response.WriteLine(searcher.Doc(i).Get("Content"));
}
for(int i=0;i
即使您没有调用searcher.Search
,您的第一个循环也会工作相同
如果检查两个循环的输出,您将看到它们实际上包含不同的文档
hits.Doc(n)
返回结果列表中的第n个文档,而searcher.Doc(n)
返回索引中的第n个文档
现在您的问题是,Lucene中的点击量是否对文档进行排序?
在Lucene.Net中,搜索结果默认按分数排序(如果您不提供排序字段)。我不太确定这里的问题是什么,但Lucene基本上是根据分数排序结果(即与权重相比的最佳匹配)。分数可能受到文档术语权重的影响:要设置权重,您需要查看Lucene中的有效负载功能。