Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join ApacheSolr中的连接查询:如何获取分层数据中的所有级别_Join_Solr_Ancestor - Fatal编程技术网

Join ApacheSolr中的连接查询:如何获取分层数据中的所有级别

Join ApacheSolr中的连接查询:如何获取分层数据中的所有级别,join,solr,ancestor,Join,Solr,Ancestor,我有一个Solr4索引,表示内容之间的子->父关系,并带有以下相关字段: 项目编号 im_端点_源_节点$nid im_端点_目标_节点$nid 其中,item_id是关系id,im_endpoints_source_node$nid是父文档id的多值字段,im_endpoints_target_node$nid是子文档id的多值字段 每个文档可能有几个子文档和几个父文档 我想选择特定文档的所有祖先或后代关系 假设我有一个这样的结构: 1 > 30 1 > 11 11 >

我有一个Solr4索引,表示内容之间的子->父关系,并带有以下相关字段:

  • 项目编号
  • im_端点_源_节点$nid
  • im_端点_目标_节点$nid
其中,item_id是关系id,im_endpoints_source_node$nid是父文档id的多值字段,im_endpoints_target_node$nid是子文档id的多值字段

每个文档可能有几个子文档和几个父文档

我想选择特定文档的所有祖先或后代关系

假设我有一个这样的结构:

1 > 30
1 > 11
11 > 121
11 > 126
126 > 134
我可以通过以下选择查询获得所有直接的父关系:

/select?fq=im_endpoints_source_node$nid:1
/select?fq={!join from=im_endpoints_target_node$nid to=im_endpoints_source_node$nid}im_endpoints_source_node$nid:1
它给出了以下结果:

{
  "response": {
    "numFound": 2,
    "start": 0,
    "docs": [
      {
        "id": "child_relation_index-9",
        "index_id": "child_relation_index",
        "item_id": "9",
        "is_rid": 9,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          1
        ],
        "im_endpoints_target_node$nid": [
          30
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      },
      {
        "id": "child_relation_index-13",
        "index_id": "child_relation_index",
        "item_id": "13",
        "is_rid": 13,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          1
        ],
        "im_endpoints_target_node$nid": [
          11
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      }
    ]
  }
}
{
  "response": {
    "numFound": 2,
    "start": 0,
    "docs": [
      {
        "id": "child_relation_index-18",
        "index_id": "child_relation_index",
        "item_id": "18",
        "is_rid": 18,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          11
        ],
        "im_endpoints_target_node$nid": [
          121
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      },
      {
        "id": "child_relation_index-19",
        "index_id": "child_relation_index",
        "item_id": "19",
        "is_rid": 19,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          11
        ],
        "im_endpoints_target_node$nid": [
          126
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      }
    ]
  }
}
以及第二级祖先关系(祖父母关系),使用以下select查询:

/select?fq=im_endpoints_source_node$nid:1
/select?fq={!join from=im_endpoints_target_node$nid to=im_endpoints_source_node$nid}im_endpoints_source_node$nid:1
它给出了以下结果:

{
  "response": {
    "numFound": 2,
    "start": 0,
    "docs": [
      {
        "id": "child_relation_index-9",
        "index_id": "child_relation_index",
        "item_id": "9",
        "is_rid": 9,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          1
        ],
        "im_endpoints_target_node$nid": [
          30
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      },
      {
        "id": "child_relation_index-13",
        "index_id": "child_relation_index",
        "item_id": "13",
        "is_rid": 13,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          1
        ],
        "im_endpoints_target_node$nid": [
          11
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      }
    ]
  }
}
{
  "response": {
    "numFound": 2,
    "start": 0,
    "docs": [
      {
        "id": "child_relation_index-18",
        "index_id": "child_relation_index",
        "item_id": "18",
        "is_rid": 18,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          11
        ],
        "im_endpoints_target_node$nid": [
          121
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      },
      {
        "id": "child_relation_index-19",
        "index_id": "child_relation_index",
        "item_id": "19",
        "is_rid": 19,
        "bs_field_relation_inactive": false,
        "ss_search_api_language": "und",
        "im_endpoints_source_node$nid": [
          11
        ],
        "im_endpoints_target_node$nid": [
          126
        ],
        "timestamp": "2013-09-24T13:03:44.739Z"
      }
    ]
  }
}
有没有一种方法可以在一次查询中获取文档的所有祖先(从级别1到级别N)?

仅供参考:此索引是使用Drupal的搜索API Solr模块和关系模块创建的。它包含了大约500k个文档的300k多个关系

任何帮助都将不胜感激