2

私の質問は非常に短く、私はそれに固執しました。次のようなドキュメントのコレクションがあります。

{
...,
"Type": [
    "Type1",
    "Type2",
    "Type3",
    "Type4"
  ],
...
}

そして、これらの値を文字列のリストにグループ化するには、map/reduce インデックスを作成する必要があると思います。たとえば、次の 2 つのドキュメントがある場合:

{
...,
"Type": [
    "Type1",
    "Type3"
  ],
...
}

{
...
"Type": [
    "Type2",
    "Type3",
    "Type4"
  ],
...
}

{"Type1","Type2","Type3","Type4"} のようなすべての個別の値を持つ 1 つのリストの結果が必要です

方法がわかりません。いくつかの方法を試しましたが、成功しませんでした。

言い忘れましたが、今のところ 1500 を超えるドキュメントなど、大量のデータがあります。

public class ProjectTypeIndex : AbstractIndexCreationTask<Project, ProjectTypeIndex.ReduceResult>
{
    public class ReduceResult
    {
        public string ProjectType { get; set; }
    }

    public ProjectTypeIndex()
    {
        Map = projects => from project in projects
                                   select new
                                       {
                                           project.Type
                                       };
        Reduce = results => from result in results
                            group result by result.Type into g 
                            select new
                                {
                                    ProjectType = g.Key
                                };
    }
}
4

1 に答える 1

2

こんにちは、解決策を見つけましたが、それが最善の方法であるかどうかはわかりません。結果のみの文字列のリストがまだないため、foreachを介して文字列のリストを入力して解決しました。これがインデックスの作成です。誰かがコードをチェックできれば、とても感謝しています。

public class ProjectTypeIndex : AbstractIndexCreationTask<Project, ProjectTypeIndex.ReduceResult>
{
    public class ReduceResult
    {
        public string ProjectType { get; set; }
    }

    public ProjectTypeIndex()
    {
        Map = projects => from project in projects
                                   from type in project.Type
                                   select new
                                       {
                                           ProjectType = type
                                       };

        Reduce = results => from result in results
                            group result by result.ProjectType into g
                            select new
                                {
                                    ProjectType = g.Key
                                };
    }
}
于 2013-01-07T15:03:53.130 に答える