不幸的是,您不能在 termscomponent 中执行此操作,因为它根本不支持基于其他字段的过滤,而不是您发布 terms 组件的字段。
该问题的最简单解决方案是将标准请求处理程序(即<requestHandler name="standard" class="solr.SearchHandler>
)与您的边界框过滤器一起使用:
fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5
以及您要为其列出术语的字段上的一个方面(假设您的字段名称是“名称”):
facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$
您最终会得到如下查询:
/select?q=*:*&fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5&facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$
给出如下结果:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="name">
<int name="maxtor">1</int>
<int name="memory">1</int>
<int name="mobile">1</int>
<int name="mp500">1</int>
<int name="mb">0</int>
<int name="mini">0</int>
</lst>
</lst>
</lst>
(在方面部分)