在为我的用例找到一个好的高效算法时遇到了一些麻烦。
基本上,我正在通过Rails使用ElasticSearch在数据库中进行搜索,并且已对其进行了设置,以使其一次只能返回25个结果(大约总共有5000个结果),其ID为您输入(由search_after
参数指定)。我还要输入某个搜索结果的ID,我希望在整个数据库中建立索引。搜索无法知道它实际在哪个页面(共25个结果)中。我们还提供了一种方法,可以在结果之前和之后立即查找结果(可能也可以对其进行修改,以使结果之前和之后最多获得25条结果),而不管它是否在第一“页面”上(即索引为26)或不。
因此,对于前25个项目而言,这相当容易,因为您可以对整个数据库中的第一个项目进行一次search_after,但是在那之后,我真的不知道如何进行。
我考虑过将结果数简单地增加到26,然后使用模数算法检查它是否是第(n%25 == 1)个结果,然后将search_after
更改为(n -1)个结果,但我意识到,如果您在第一个结果出现在页面上之后直接单击任何结果,那将是行不通的。我还以为也许可以使用上述方法来获取之前的搜索结果并对此进行search_after
,但是随后我很快意识到它每次都会返回1。最后,我想到了简单地提高search_after直到找到ID为25的最后一个结果,然后使用算术找出它是什么索引,但是显然这在计算上非常费力。
让我知道是否需要澄清,因为我知道这是一个奇怪的问题。谢谢。