Solr计数某些字段项

f87krz0w  于 2023-05-06  发布在  Solr
关注(0)|答案(1)|浏览(169)

我在Solr中有一个索引,其中包含以下字段:

name
address
mobile
email

所有字段都是text_general类型。问题是,在某些项目中,某些字段丢失,我想计算这些字段。因此,例如,这里是索引上的一个项目,只有以下两个字段:

name
address

因此,例如,我想计算填充了name字段的项目总数(即该项目中存在名称)。
我认为这听起来微不足道,但阅读文档时,我不确定如何制定这样的查询。
我已经尝试过了,感谢@MatsLindh -在这里我正在搜索所有带有full_name字段的项目,所有项目都有:

>>> requests.get('http://localhost:8984/solr/solr_search_service/select', params={
... 'facet': 'true',
... 'facet.query': 'full_name:[* TO *]',
... 'wt': 'json',
... 'rows': 2,
... 'start': 0,
... }).json()
{'responseHeader': {'status': 0, 'QTime': 10, 'params': {'facet.query': 'full_name:[* TO *]', 'start': '0', 'rows': '2', 'facet': 'true', 'wt': 'json'}}, 'response': {'numFound': 0, 'start': 0, 'numFoundExact': True, 'docs': []}, 'facet_counts': {'facet_queries': {'full_name:[* TO *]': 0}, 'facet_fields': {}, 'facet_ranges': {}, 'facet_intervals': {}, 'facet_heatmaps': {}}}

但不知何故给了我零作为计数:(

vql8enpb

vql8enpb1#

您可以使用分面来获取所需的每个字段的计数,而不必对每个情况进行单独的查询。
通过使用facet.query,您可以在从主查询(q)返回的文档中运行单个查询。您可以给予多个facet.query参数,有效地创建有多少文档错过每个字段的计数(如果您想首先过滤文档集,请在q中给出一个查询-例如“有多少在tag字段中具有abc的文档缺少名称”)。

?q=*:*&facet=true&facet.query=name:[* TO *]&facet.query=address:[* TO *]

相关问题