我找到了joins的文档和subqueries的文档,但我不确定如何将它们合并。
我想通过id
搜索某些内容(这是传入的变量)。该结果将为sectionpath
。然后,我想要找到以<{1}}开始的所有文档。我可以在一个查询中执行此操作吗?
这是我到目前为止所尝试的内容:
sectionpath
我知道这不起作用,但这是这样的意图:给我sectionpath:_query_:"{!fl=sectionpath}id:<variable>"*
开头的结果(这就是*的含义)具有id的文档的sectionpath
sectionpath
。我知道这远非奏效,但我不确定如何接近我的意图。
我也尝试过这样的事情:
<variable>
但这似乎正在接近一切。它似乎不受sectionpath的限制。
答案 0 :(得分:0)
有多个阶段可以达到期望的结果,但总之;是的,可以在单个查询中使用字段的值。
我们将使用[subquery]
*转换器,然后使用{!prefix}
*查询解析器。另外,我们将在子查询中使用field value as input。
首先,查询将在子查询中使用其值的文档:
q=id:123
或者如果您仅使用id来过滤主要文档,则可以使用过滤查询;
q=*:*
fq=id:123
指定子查询,然后选择要检索的主要文档字段:
fl=id,section_path,childpaths:[subquery]
还使用主文档字段(在原始查询参数中)为子查询提供查询:
childpaths.q={!term f=section_path v=$row.section_path}
在这里,我们使用!term
查询解析器来指示我们要搜索的字段。同样,通过使用v
,我们引用了一个名为$row
的自动变量来获取主文档及其section_path
的值。
请记住,这将像section_path:xyz
那样构造查询,但是我们想获取其section_path
值以主记录开头的文档。基本上,我们想构造一个像section_path:xy*
这样的查询。幸运的是,我们有一个!prefix
查询解析器。因此,将childpaths.q
更改为;
childpaths.q={!prefix f=name_en v=$row.name_en}
指定要检索的子文档字段(也在原始查询参数中):
childpaths.fl=id,section_path
您也可以像这样将子文档限制为仅获取 5 行;
childpaths.rows=5
您还可以修改其他查询参数,就像常规查询一样。
解雇请求,瞧!
这是完整的查询:
q=*:*&fq=id:123&fl=id,section_path,childpaths:[subquery]&childpaths.q={!prefix f=name_en v=$row.name_en}&childpaths.fl=id,section_path