Indexing 取函数';无法工作,无法发送到RavenDB进行查询
查询代码:Indexing 取函数';无法工作,无法发送到RavenDB进行查询,indexing,ravendb,Indexing,Ravendb,查询代码: var query = session.IndexQuery<App_OrgSearch.IndexResult, App_OrgSearch>(); var organizationUnitResults = query.Statistics(out stats) .Skip(0) .Take(5) .AsProjection<Org>()
var query = session.IndexQuery<App_OrgSearch.IndexResult, App_OrgSearch>();
var organizationUnitResults = query.Statistics(out stats)
.Skip(0)
.Take(5)
.AsProjection<Org>().ToList();
public static IRavenQueryable<TResult> IndexQuery<TResult, TIndex>(this IDocumentSession session)
where TIndex : AbstractIndexCreationTask, new()
{
return session.Query<TResult, TIndex>();
}
var query=session.IndexQuery();
var organizationUnitResults=query.Statistics(out stats)
.Skip(0)
.采取(5)
.AsProjection().ToList();
公共静态IRavenQueryable IndexQuery(此IDocumentSession会话)
其中TIndex:AbstractIndexCreationTask,new()
{
返回session.Query();
}
App_OrgSearch是我定义的索引,如下所示:
public class App_OrgSearch : AbstractIndexCreationTask<Org, App_OrgSearch.IndexResult>
{
public class IndexResult
{
public string Id { get; set; }
public string BusinessName { get; set; }
public string ShortName { get; set; }
public IList<string> Names { get; set; }
public List<string> PhoneNumbers { get; set; }
public List<OrganizationUnitPhone> OrganizationUnitPhones { get; set; }
}
public App_OrganizationUnitSearch()
{
Map = docs => from doc in docs
select new
{
Id = doc.Id,
Names = new List<string>
{
doc.BusinessName,
doc.ShortName,
},
BusinessName = doc.BusinessName,
ShortName = doc.ShortName,
PhoneNumbers = doc.OrganizationUnitPhones.Where(x => x != null && x.Phone != null).Select(x => x.Phone.Number),
};
Indexes.Add(x => x.Names, FieldIndexing.Analyzed);
}
}
公共类应用程序\u OrgSearch:AbstractIndexCreationTask
{
公共类索引结果
{
公共字符串Id{get;set;}
公共字符串BusinessName{get;set;}
公共字符串短名称{get;set;}
公共IList名称{get;set;}
公共列表电话号码{get;set;}
公共列表组织单元电话{get;set;}
}
公共应用程序_OrganizationUnitSearch()
{
Map=docs=>来自文档中的文档
选择新的
{
Id=文件Id,
名称=新列表
{
BusinessName博士,
ShortName博士,
},
BusinessName=doc.BusinessName,
ShortName=doc.ShortName,
PhoneNumbers=doc.OrganizationUnitPhones.Where(x=>x!=null&&x.Phone!=null)。选择(x=>x.Phone.Number),
};
添加(x=>x.Names,fieldindex.analysis);
}
}
我在数据库里有27条记录。我想取5,但查询后,所有27条记录都返回了。为什么
Take
函数不起作用?您的示例代码似乎有误
var query = session.IndexQuery<App_OrgSearch.IndexResult, App_OrgSearch>();
var organizationUnitResults = organizationUnitsQuery.Statistics(out stats)
var query=session.IndexQuery();
var organizationUnitResults=organizationUnitsQuery.Statistics(输出统计数据)
什么是组织单元?您将查询设置为
query
,但为了清晰起见,没有对会话上的IndexQuery
方法进行编辑;删除了不明确的tagI,通过更改函数调用顺序解决了此问题:var organizationUnitResults=query.Statistics(out stats).AsProjection().Skip(0).Take(5).ToList();