0

我正在尝试根据子集合的值在 RavenDB 中查找一个或多个文档。

我有以下课程

public class GoldenDocument
{
    public GoldenDocument()
    {
        LinkedDocuments = new List<LinkedDocument>();
        MergeMatchFields = new List<MergeMatchField>();
    }

    public string Id { get; set; }
    public Guid SourceRowId { get; set; }
    public List<MergeMatchField> MergeMatchFields { get; set; }
    public List<LinkedDocument> LinkedDocuments { get; set; }
}

以及集合中的类MergeMatchFields

public class MergeMatchField
{
    public string Id { get; set; }
    public Guid OriginId { get; set; }
    public string Name { get; set; }
    public MatchType MatchType { get; set; }
    public double MatchPerc { get; set; }
    public string Value { get; set; }
}

在一个List<MergeFields> mergeFields集合中,我的值尚未存储在 RavenDB 中。通过执行以下查询,将值与 RavenDB 文档中的值进行比较以查找是否可能匹配:

using (var session = documentStore.OpenSession())
{
    var docs = from gd in session.Query<GoldenDocument>()
                from mf in gd.MergeMatchFields
                from tf in mergeFields
                where mf.Name == tf.Name 
                && JaroWinklerCalculator.jaroWinkler(mf.Value, tf.Value) > .90d 
                && !string.IsNullOrEmpty(mf.Value)
                select gd;
}

我知道 ravenDB 不支持SelectMany(),所以我将如何从文档存储中获取结果?

4

1 回答 1

1

为此创建一个索引,该索引将输出您要查询的值。请注意,您不能像在此处那样执行任意代码:JaroWinklerCalculator.jaroWinkler(mf.Value, tf.Value) > .90d

但是您可以使用模糊查询,它们也会这样做。

于 2013-04-03T14:36:03.937 回答