如何使用 Pysolr 进行分面搜索
How to do facet search with Pysolr
当我们使用带有 facet 的 curl 或 urlopen 执行查询时,我们得到一个包含 3 个元素的嵌套字典
1. 响应头 2. 响应 3. facet_counts
我想在使用 Pysolr 搜索时显示 facet_counts。它只显示查询输出的 'response' 值。我正在尝试以下代码,请帮忙。
import pysolr
conn = pysolr.Solr('http://localhost:8983/solr/')
result = conn.search('enron', **{
'fl' : 'body',
'facet' : 'on'
})
for r in result:
print r
当您遍历 result
变量时,您是在遍历 pysolr 自己的 Results object(而不是直接遍历 Solr 所示的 JSON 结构)。
import pysolr
import pprint
conn = pysolr.Solr('http://localhost:8080/solr/corename')
result = conn.search('*:*', **{
'fl': 'content',
'facet': 'true',
'facet.field': 'field_name'
})
pprint.pprint(result.facets)
任何方面都将出现在该结果对象的 facets
属性 下。
上面的例子输出:
{'facet_dates': {},
'facet_fields': {'field_name': ['value', 54439, 'value2', 21179]},
'facet_intervals': {},
'facet_queries': {},
'facet_ranges': {}}
当我们使用带有 facet 的 curl 或 urlopen 执行查询时,我们得到一个包含 3 个元素的嵌套字典 1. 响应头 2. 响应 3. facet_counts
我想在使用 Pysolr 搜索时显示 facet_counts。它只显示查询输出的 'response' 值。我正在尝试以下代码,请帮忙。
import pysolr
conn = pysolr.Solr('http://localhost:8983/solr/')
result = conn.search('enron', **{
'fl' : 'body',
'facet' : 'on'
})
for r in result:
print r
当您遍历 result
变量时,您是在遍历 pysolr 自己的 Results object(而不是直接遍历 Solr 所示的 JSON 结构)。
import pysolr
import pprint
conn = pysolr.Solr('http://localhost:8080/solr/corename')
result = conn.search('*:*', **{
'fl': 'content',
'facet': 'true',
'facet.field': 'field_name'
})
pprint.pprint(result.facets)
任何方面都将出现在该结果对象的 facets
属性 下。
上面的例子输出:
{'facet_dates': {},
'facet_fields': {'field_name': ['value', 54439, 'value2', 21179]},
'facet_intervals': {},
'facet_queries': {},
'facet_ranges': {}}