2

我有一个使用 SolrNet 访问的 solr 索引,我想检索结果中特定文档的索引(位置),而不返回整个结果集。

更详细地说...查询返回约 30,000 个文档,并按整数字段排序。唯一键字段包含一个 Guid,我想根据唯一键查找特定文档在结果中的位置,同时仅返回前 10 个结果。

这个索引最初是在普通的旧 Lucene 中实现的,这个任务是通过两个查询来实现的,一个是获取我想知道的文档的 lucene doc id,第二个是返回整个结果集。然后,我可以使用 doc id 来查找文档在完整结果集中出现的位置,但随后仅枚举前 10 个文档。

有没有办法用 Solr 实现我所追求的,而不返回所有 30000 个结果(即使将其限制为 Guid 似乎也太慢了)?

谢谢

4

2 回答 2

5

我认为您可以使用范围查询,包括您的用户点的较低级别,您可以获得上面的用户数量。您可以使用构面范围方法进行显式查询或获取该信息。

所以,如果你知道你的用户点是 10.000,你可以做一个查询:game:tetris points[MaxInt TO 10000],如果结果是 375,你就会知道你的用户在排名 375。

于 2011-01-14T11:03:11.880 回答
0

我能想到的唯一可靠的方法是在索引时建立排名,即有一个“排名”整数字段并在您建立索引时填充它。这样做的缺点是每次更新都需要重建整个索引。

Lucene doc id 不稳定,我不建议为此使用它们(请参阅thisthisthis),而且 Solr 也不会公开它们。

于 2011-01-06T14:44:56.917 回答