Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# C语言中Lucene的查询#_C#_Lucene.net - Fatal编程技术网

C# C语言中Lucene的查询#

C# C语言中Lucene的查询#,c#,lucene.net,C#,Lucene.net,我是Lucene的新手。我有一些存储在数据库中的业务对象。检索它们时,我使用Lucene.NET对它们进行索引,如下所示: List<MyEntity> myResults = GetResultsFromDb(); using (var indexService = new IndexService(indexWriter)) { indexService.IndexEntities(myResults, p => { var document = new D

我是Lucene的新手。我有一些存储在数据库中的业务对象。检索它们时,我使用Lucene.NET对它们进行索引,如下所示:

List<MyEntity> myResults = GetResultsFromDb();
using (var indexService = new IndexService(indexWriter))
{
  indexService.IndexEntities(myResults, p =>
  {
    var document = new Document();
    document.Add(new Field("ID", p.ID.ToString(), Field.Store.NO, Field.Index.NOT_ANALYZED));
    document.Add(new Field("Name", p.Name, Field.Store.NO, Field.Index.NOT_ANALYZED));
    document.Add(new Field("Description", p.Description, Field.Store.YES, Field.Index.ANALYZED));
    document.Add(new Field("IsActive", p.IsActive.ToString(), Field.Store.NO, Field.Index.NOT_ANALYZED));
    return document;
  });
}
List myResults=GetResultsFromDb();
使用(var indexService=newindexservice(indexWriter))
{
indexService.IndexEntities(myResults,p=>
{
var document=新文档();
添加(新字段(“ID”,p.ID.ToString(),Field.Store.NO,Field.Index.NOT_analysis));
添加(新字段(“名称”,p.名称,Field.Store.NO,Field.Index.NOT_analysis));
添加(新字段(“说明”,p.说明,Field.Store.YES,Field.Index.analysis));
添加(新字段(“IsActive”,p.IsActive.ToString(),Field.Store.NO,Field.Index.NOT_analysis));
归还文件;
});
}
我现在尝试搜索具有类似名称的业务对象。在尝试执行该搜索时,我使用以下命令:

  var indexSearcher = new DirectoryIndexSearcher(new   DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Index")), true);
  using (var searchService = new SearchService(indexSearcher))
  {
    TermQuery termQuery = new TermQuery(new Term("Name", GetNameToSearchWith()));                    

    SearchResult<MyEntity> searchResults = searchService.SearchIndex<CourseSearchResult>(termQuery, new MyEntityDefinition());
    foreach (CourseSearchResult searchResult in searchResults.Results)
    {
      filteredResults.Results.Add(searchResult);
      if (filteredResults.Count() >= 25)
        break;
    }
  }
var indexsearch=new directoryindexsearch(new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“Index”)),true; 使用(var searchService=newsearchservice(indexSearcher)) { TermQuery TermQuery=新的TermQuery(新术语(“名称”,GetNameToSearchWith()); SearchResult searchResults=searchService.SearchIndex(termQuery,new MyEntityDefinition()); foreach(CourseSearchResult中的searchResult searchResult.Results) { filteredResults.Results.Add(searchResult); 如果(filteredResults.Count()>=25) 打破 } } 当我执行查询时,我检索结果。问题是,唯一填充的值是“Name”字段。对于MyEntity,ID是一个Guid,描述是一个字符串,IsActive是一个可为空的bool。执行查询时,ID始终为空Guid,IsActive标志始终为null,描述始终为空字符串


我做错了什么?

实际上,您在文档中告诉Lucene不要将这些数据存储在文档中。对于搜索期间要从文档中检索的所有字段,应将Field.Store.NO更改为Field.Store.YES。

DirectoryIndexSearcher不是标准Lucene.Net发行版的一部分。这是SimpleLucene()库的一部分。我会尝试在没有simplelucene的情况下实现相同的搜索查询。如果它工作正常,那么试着调试simplelucene为什么不能按预期工作。