python - 如何在 PySolr 中使用分面 - 似乎无法显示分面结果

标签 python solr pysolr

(我见过与此类似的问题 - 但似乎无法解决为什么以下不起作用!)

您好,我有一个正在运行的 solr 本地实例并进行以下调用(通过浏览器中的 url 框):

http://localhost:8983/solr/select?q=video&rows=0&facet=true&facet.field=q_date

并得到下面的结果(见结果1)。然后我尝试使用 Python/PySolr 进行等效操作:

solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10)

params = {
  'facet': 'true',
  'facet.field': 'q_date',
  'rows': '0',
}

results = solr.search('video', **params)

而且似乎没有得到任何结果(如果我生成 'rows': 10,那么我会得到 10 个结果)——但在任何一种情况下,我似乎都没有得到任何方面。

有什么办法解决这个问题吗?弄清楚这一点后,我还希望使用 StatsComponent 功能(例如 &stats=true&stats.field=q_visits)

提前致谢

结果 1:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="facet">true</str>
<str name="q">video</str>
<str name="facet.field">q_date</str>
<str name="rows">0</str>
</lst>
</lst>
<result name="response" numFound="670" start="0"/>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="q_date">
<int name="2013-03-31T00:00:00Z">135</int>
<int name="2013-01-31T00:00:00Z">121</int>
<int name="2012-10-31T00:00:00Z">113</int>
<int name="2013-02-28T00:00:00Z">112</int>
<int name="2012-11-30T00:00:00Z">107</int>
<int name="2012-12-31T00:00:00Z">82</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
</response>

最佳答案

根据 pysolr client tests 中的方面示例,您需要将 facet 参数的值设置为“on”。如下所示:

solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10)`

params = {
  'facet': 'on',
  'facet.field': 'q_date',
  'rows': '0',
}

results = solr.search('video', **params)

关于python - 如何在 PySolr 中使用分面 - 似乎无法显示分面结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704339/

相关文章:

python - 如何使用一个 Python 脚本运行另一个 Python 脚本并将变量传递给它?

python - Keras fit_generator 问题

python - Python 的任何/全部的短路行为是显式的吗?

django - Django-haystack 使用 Solr 索引列表而不是原始数据

python - Django ·干草堆。 And, or 在搜索查询集中

python - ssh - 获取许多远程文件的元数据

python - Riak Search 2 没有索引桶

java - 通过摘要进行全文搜索

Solr中连接字段的函数

solr - Pysolr过滤器搜索