10

/select/?q=*:*&rows=100&facet=on&facet.field=category

我有大约 100 000 个文档被索引。但是我使用 rows=100 只返回 100 个文档。返回类别的构面计数,但返回所有索引文档的计数。

我们可以以某种方式将方面限制为返回的结果集吗?即只有100行?

4

4 回答 4

6

正如 Pascal 指出的那样,我认为这不可能以任何直接的方式进行。

我可以看到两种方法来实现这一点:

  1. 方法一:自己数数访问返回的100个结果。如果它们是分类字段,这非常容易和快速,但如果它们是需要标记化的文本字段等,则更难。

  2. 方法二:做两遍:

    1. 做一个不带分面的普通查询(此时您只需要请求文档 ID)
    2. 收集所有返回文件的ID
    3. 对所有字段和构面进行第二次查询,添加一个过滤器以将结果限制为在 setp 2 中收集的那些 ID。类似于:
      select/?q=:&facet=on&facet.field=category&fq=id:(312 OR 28 OR 1231 ...)

第一个是更有效的方式,我建议非文本字段。第二种计算成本高,但具有适用于所有类型 od 字段的优势。

于 2011-06-29T14:45:41.463 回答
2

对不起,但我不认为这是可能的。构面始终基于与查询匹配的所有文档。

于 2010-10-28T20:24:40.073 回答
0

如果你总是执行相同的查询(q=*:*),也许你可以使用 facet.limit,例如:

select/?q=*:*&rows=100&facet=on&facet.field=category&facet.limit=100

告诉我们 solr 在构面中使用的顺序是否与查询中的顺序相同

于 2010-11-15T17:14:15.553 回答
0

不是一个真正的答案,但也许总比没有好:结果分组功能(从主干检查!):

http://wiki.apache.org/solr/FieldCollapsing

其中 facet.field=category 类似于 group.field=category 并且您将只获得与您指定的一样多的组('facet hits')!

于 2010-11-03T10:19:31.250 回答