我需要在按分数查看文档排序的 Solr 结果集中来回导航。为了形象化,首先将文档标题列表呈现给用户,然后他或她可以单击其中一个标题以查看更多详细信息,然后需要有机会移动到原始列表中的下一个文档而无需返回和单击另一个标题。
在查看文档期间更改:修改其动态字段(或创建尚不存在)以标记该文档已被查看(用于其他搜索)。
我面临的问题是,当文档被更改并重新索引以保留这些更改时,有时(但并非总是如此,这非常令人不安)它在相同查询的结果集中的位置会发生变化(换句话说,它的分数会发生变化因为在浏览按文档字段之一排序的结果时不会发生这种情况)。因此,“上一个”/“下一个”导航无法正常工作。
我没有在字段上使用任何自定义权重或助推器来计算分数。此外,在浏览期间更改的动态字段不参与用于浏览记录集的查询。
那么,问题是:对查询中未包含的文档字段的修改是否可以改变其相关性分数?如果可以,那我该如何控制呢?
更新
我做了一些测试,可以添加以下内容:
即使没有修改任何字段,文档也会更改其在结果集中的位置 - 只需请求文档并重新索引它而不对其字段进行任何更改,它就会在下次对同一索引执行相同查询时占据另一个位置。
即使结果集被显式排序(“first_name DESC”),也会发生这种情况,因此不涉及分数(取决于更新日期)。文档保持不变,其字段结果集排序依据相同,但其位置发生变化。
仍然不知道如何避免这种情况。