Solr 搜索整个索引,但只搜索 return 最低级别的后代

Solr search entire index but only return the lowest level descendents

我完全迷失了 Solr 生态系统……也许是因为我正在处理的数据结构根本难以在 Solr 中正确处理。我正在尝试为分层分类系统(NAICS:https://www23.statcan.gc.ca/imdb/p3VD.pl?Function=getVD&TVD=1181553)编制索引 documents/entries。

结构是这样的:

我想要的是索引 Solr 中的整个结构(使用推荐的任何方式,即嵌套文档,或其他一些 category/path 变量解决方案等),以便当用户搜索时,他们的搜索词是太宽泛,无法在结构的较低级别进行匹配,而是在所有后代仍然匹配的结构中进行更高级别的匹配,而不是 returned。 例如,用户搜索 'oil seed farming' 并且命中 return 表示 1111-油籽和谷物种植的文档。相反,我想要的只是 return 该条目 (111110、111111、111120) 的最后一个叶后代,就好像它们首先匹配一样。如何在 Solr 中实现这一点或者有哪些选择?最终目标是仅根据用户查询将结构过滤到最低的叶子。

编辑: 根据收到的建议,这是我制定的方法。

curl http://localhost:8983/solr/NAICS/query -d '{
  "query": "{!join from=ANCESTOR_PATH to=DESCENDANT_PATH}NAICS:1111",
  "facet": {
    "TREE_NODES": {
      "type": "query",
      "q": "LEVEL:5",
      "facet" : {
        "TREE": {
          "type": "terms",
          "field": "DESCENDANT_PATH",
          "limit":-1
        }
      }
    }

将每个较低的叶子索引为文档。对于每个文档,包括父项中的所有术语,一直到根。这会给你类似的东西:

{
  "id": "111110",
  "name": "Soybean Farming",
  "path": "11-Agriculture/111-Crop Production/1111-Oil seed and Grain farming/11111-D Soybean Farming",
  "categories": [
    "11-Agriculture",
    "111-Crop Production",
    "1111-Oil seed and Grain farming",
    "11111-D Soybean Farming"
  ]
}

这将允许您针对 categories 字段搜索任何术语,如果您使用 string 字段(或 path hierarchy tokenizer field)作为 path , 如果需要,您还可以进行精确匹配以查找层次结构。