Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Lucene.NET3.03中不推荐的Hits对象,如何替换它?_C#_Full Text Search_Lucene.net - Fatal编程技术网

C# 在Lucene.NET3.03中不推荐的Hits对象,如何替换它?

C# 在Lucene.NET3.03中不推荐的Hits对象,如何替换它?,c#,full-text-search,lucene.net,C#,Full Text Search,Lucene.net,我正在通过lucene工作,在这个问题上被Hits对象难住了。我有一个Using Lucene.Net.Search,但由于某些原因,VS12 Express找不到Hits对象,因此下面的代码无法编译 编译器抱怨这一行 Hits hits = searcher.Search(booleanQuery, hits_limit); 显示以下错误消息 错误1找不到类型或命名空间名称“Hits”(是否为 缺少使用指令或程序集引用?) 我不明白,根据在线教程,你需要的alk是Lucnen.Net.Sea

我正在通过lucene工作,在这个问题上被Hits对象难住了。我有一个Using Lucene.Net.Search,但由于某些原因,VS12 Express找不到Hits对象,因此下面的代码无法编译

编译器抱怨这一行

Hits hits = searcher.Search(booleanQuery, hits_limit);
显示以下错误消息

错误1找不到类型或命名空间名称“Hits”(是否为 缺少使用指令或程序集引用?)

我不明白,根据在线教程,你需要的alk是Lucnen.Net.Search

有什么建议吗

// validation
if (subqueries.Count == 0) return new List<MATS_Doc>();
// set up lucene searcher
Searcher searcher = new IndexSearcher(_directory, false);
var hits_limit = 1000;
var analyzer = new StandardAnalyzer(Version.LUCENE_30);
BooleanQuery booleanQuery = new BooleanQuery();
foreach (Query fieldQuery in subqueries)
{
    booleanQuery.Add(fieldQuery, Occur.SHOULD);
}
//var parser = new QueryParser(Version.LUCENE_30, searchField, analyzer);
//var query = _parseQuery(searchQuery, parser);
Hits hits = searcher.Search(booleanQuery, hits_limit);
IEnumerable<MATS_Doc> results = _mapLuceneSearchResultsToDataList(hits, searcher);
analyzer.Close();
searcher.Dispose();
return results;
//验证
if(subquerys.Count==0)返回新列表();
//设置lucene搜索器
Searcher Searcher=newindexsearcher(_目录,false);
风险值达到上限=1000;
var分析仪=新的标准分析仪(版本:LUCENE_30);
BooleanQuery BooleanQuery=新的BooleanQuery();
foreach(子查询中的查询字段查询)
{
booleanQuery.Add(fieldQuery,Occurse.SHOULD);
}
//var parser=newqueryparser(Version.LUCENE_30,searchField,analyzer);
//var query=\u parseQuery(searchQuery,parser);
点击次数=searcher.Search(布尔查询,点击次数限制);
IEnumerable results=\u mapLuceneSearchResultsToDataList(点击率,搜索者);
analyzer.Close();
searcher.Dispose();
返回结果;

我使用Lucene.net 3.0.3,Search()返回一个TopDocs对象,其中包含一些属性和ScoreDoc元素数组。以下是一个例子:

Lucene.Net.Search.TopDocs results = searcher.Search(booleanQuery, null, hits_limit);


foreach(ScoreDoc scoreDoc in results.ScoreDocs){
    // retrieve the document from the 'ScoreDoc' object
    Lucene.Net.Documents.Document doc = searcher.Doc(scoreDoc.Doc);
    string myFieldValue = doc.get("myField");
}

谢谢是否需要一次将整个文档取回,而不是一个字段一个字段地取回?行Lucene.Net.Documents.doc=searcher.doc(scoreDoc.doc);获取整个文档。然后,您可以像我在示例中所做的那样访问它的字段,或者使用类似于foreach(doc.GetFields()中的Lucene.Net.Documents.Field f){Console.WriteLine(“Field=“+f.Name+”,value=“+f.StringValue”)}的方法对其进行迭代