как объединить родительские и дочерние элементы из вложенных документов Solr - PullRequest
0 голосов
/ 01 октября 2019

Я новичок в lucence, solr запросах, у меня есть сомнения по поводу того, как сделать запрос к вложенным документам.

Я проиндексировал вложенный документ, как показано ниже

[
  {
    "id": "1",
    "title": "Solr1",
    "_childDocuments_": [
      {
        "id": "2",
        "title": "Solr2",
        "_childDocuments_": [
          {
            "id": "3",
            "title": "Solr3",
            "_childDocuments_": [
              {
                "id": "4",
                "title": "SolrCloud supports it"
              }
            ],
            "something_else":"irrelevant"
          }
        ],
        "something_else":"irrelevant"
      }
    ],
    "something_else":"irrelevant"
  },
  {
    "id": "5",
    "title": Solr5",
    "_childDocuments_": [
      {
        "id": "6",
        "title": "SolrCloud here as well"
      }
    ]
  }
]

Какискать заголовок: SolrCloud, и перечислил всех детей родителей? Например,

[
  {
    "id": "1",
    "title": "Solr1",
    "_childDocuments_": [
      {
        "id": "2",
        "title": "Solr2",
        "_childDocuments_": [
          {
            "id": "3",
            "title": "Solr3",
            "_childDocuments_": [
              {
                "id": "4",
                "title": "SolrCloud supports it"
              }
            ]
          }
        ]
      }
    ]
  },
  {
    "id": "5",
    "title": Solr5",
    "_childDocuments_": [
      {
        "id": "6",
        "title": "SolrCloud here as well"
      }
    ]
  }
]

, в котором перечислены все родители документа 4 (Sorl1, Solr2, Solr3) и документа 6 (Solr5). И глубина документов не постоянна.

1 Ответ

0 голосов
/ 01 октября 2019

Мое текущее решение состоит в том, чтобы массировать данные, добавлять трассировку в исходные данные, так что я буду знать, откуда пришел документ. например,

[
  {
    "id": "1",
    "title": "Solr1",
    "_childDocuments_": [
      {
        "id": "2",
        "title": "Solr2",
        **"parent_id":"1",**
        **"trace":"Solr1",**
        "_childDocuments_": [
          {
            "id": "3",
            "title": "Solr3",
            **"parent_id":"2",**
            **"trace":"Solr1/Solr2",**
            "_childDocuments_": [
              {
                "id": "4",
                "title": "SolrCloud supports it"
                **"parent_id":"3",**
                **"trace":"Solr1/Solr2/Solr3",**
              }
            ],
            "something_else":"irrelevant"
          }
        ],
        "something_else":"irrelevant"
      }
    ],
    "something_else":"irrelevant"
  },
  {
    "id": "5",
    "title": Solr5",
    "_childDocuments_": [
      {
        "id": "6",
        **"parent_id":"5",**
        **"trace":"Solr5",**
        "title": "SolrCloud here as well"
      }
    ]
  }
]

Итак, после индексации я могу узнать, кто является родительским документом по результату.

Может ли кто-то согласиться с этим? Ищите лучшее решение, чем это.

...