我完全迷失在掌握 Solr 生态系统...也许是因为我正在处理的数据结构从根本上难以在 Solr 中正确处理。我正在尝试索引分层分类系统的文档/条目(NAICS:https ://www23.statcan.gc.ca/imdb/p3VD.pl?Function=getVD&TVD=1181553 )。
结构是这样的:
- 11-农业
- 111-作物生产
- 1111-油料种子和粮食种植
- 11111-D 大豆种植
- 111110-大豆种植
- 111111-其他豆类养殖
- 11112-小麦种植
- 111120-小麦种植
- 11111-D 大豆种植
- 1111-油料种子和粮食种植
- 111-作物生产
我想要的是索引 Solr 中的整个结构(使用推荐的任何方式,即嵌套文档或其他一些类别/路径变量解决方案等),以便当用户搜索并且他们的搜索词过于广泛而无法在较低级别匹配结构,而是匹配结构中更高的结构,所有后代仍然匹配并返回。例如,用户搜索“油料种子种植”并返回代表 1111-油料种子和谷物种植的文档的匹配项。我想要的是只返回该条目的最后一个叶子后代(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
}
}
}