gpt4 book ai didi

c# - 如何创建返回输入文档类型的索引?

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:05 27 4
gpt4 key购买 nike

我有一个包含文档集合的 Raven 数据库。我想检索该集合中的一部分文档。只有满足特定条件的文档才会被检索。但是,对于检索到的每个文档,必须检索整个文档。

考虑以下文档类型:

public class MyDocument {
public string Id { get; set; }

public string Name { get; set; }
public int Foo { get; set; }
public string Bar { get; set; }
}

假设我想检索 Foo 属性大于给定值(在编译/索引创建时未知)的所有文档。使用动态索引,这可以像这样完成:

IList<MyDocument> FindMyDocuments(int minFooValue) {
using(IDocumentSession session = _store.OpenSession()) {
return session.Query<MyDocument>().Where(d => d.Foo > minFooValue).ToList();
}
}

但是,据我了解,使用预定义索引而不是动态索引有好处。所以我想预先为这个操作定义一个索引。 AbstractIndexCreationTask< MyDocument, MyDocument > 的实现会是什么样子?

以下内容似乎不起作用,因为 Raven 希望 Map 选择新的匿名类型:

class MyDocumentIndex: AbstractIndexCreationTask<MyDocument, MyDocument> {
public MyDocumentIndex() {
Map = docs => from doc from docs
select doc;
}
}

不应该也有一个 Reduce 部分吗?

您可能已经注意到,我对这个 Map/Reduce 概念还很陌生 :-)。

最佳答案

大卫,你这样做:

public class MyDocumentIndex: AbstractIndexCreationTask<MyDocument> {
public MyDocumentIndex() {
Map = docs => from doc from docs
select new { doc.Foo };
}
}

然后你查询它:

session.Query<MyDocument, MyDocumentIndex().Query(x=>x.Foo > minValue).ToArray();

关于c# - 如何创建返回输入文档类型的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com