我使用Solrnet访问了SOLR索引,并且我想检索结果中特定文档的索引(位置),而不会返回整个结果集。

更详细地...查询返回约30,000个文档,并由整数字段订购。唯一的密钥字段包含一个GUID,我想根据唯一键在结果中找到特定文档所在的位置,而仅返回前10个结果。

该索引最初是在普通的旧Lucene中实现的,这项任务是通过两个查询来实现的,一个是为了获得我想知道的文档的Lucene Doc ID,然后第二个返回整个结果集。然后,我可以使用DOC ID查找文档在完整结果集中出现的位置,但后来仅列举了第一个10的文档。

有没有办法可以实现Solr的追求,而没有返回所有30000个结果(甚至将其限制在GUID上似乎只是太慢了)?

谢谢

有帮助吗?

解决方案

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

因此,如果您知道用户点为10.000,则可以进行查询:游戏:俄罗斯方块点[Maxint至10000],如果结果为375,则会知道您的用户在等级375中。

其他提示

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

Lucene Doc ID不稳定,我不建议将它们使用它们(请参阅 这个, 这个, 这个),而且Solr无论如何都不会暴露它们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top