【发布时间】:2011-05-01 20:06:53
【问题描述】:
/select/?q=*:*&rows=100&facet=on&facet.field=category
我有大约 100 000 个文档被编入索引。但是我使用 rows=100 只返回 100 个文档。返回类别的构面计数,但返回所有索引文档的计数。
我们能否以某种方式将方面限制为返回的结果集?即只有 100 行?
【问题讨论】:
/select/?q=*:*&rows=100&facet=on&facet.field=category
我有大约 100 000 个文档被编入索引。但是我使用 rows=100 只返回 100 个文档。返回类别的构面计数,但返回所有索引文档的计数。
我们能否以某种方式将方面限制为返回的结果集?即只有 100 行?
【问题讨论】:
正如 Pascal 所指出的,我认为不可能以任何直接的方式实现。
我可以看到两种方法来实现这一点:
方法一:自己统计访问返回的100个结果。如果它们是分类字段,这非常容易和快速,但如果它们是需要标记化的文本字段等,则更难。
方法二:做两遍:
select/?q=:&facet=on&facet.field=category&fq=id:(312
OR 28 OR 1231 ...)
第一种方式更高效,我建议用于非文本字段。第二种计算成本高,但具有适用于所有类型 od 字段的优势。
【讨论】:
如果你总是执行相同的查询(q=*:*),也许你可以使用facet.limit,例如:
select/?q=*:*&rows=100&facet=on&facet.field=category&facet.limit=100
告诉我们 solr 在构面中使用的顺序是否与查询 : 中的顺序相同。
【讨论】:
不是一个真正的答案,但总比没有好:结果分组功能(从主干检查!):
http://wiki.apache.org/solr/FieldCollapsing
其中 facet.field=category 与 group.field=category 类似,您将只获得指定数量的组(“facet hits”)!
【讨论】:
抱歉,我认为这是不可能的。构面始终基于与查询匹配的所有文档。
【讨论】: