我需要先逐一浏览按比例查看文档排序的Solr结果集。为了形象化,首先向用户呈现文档标题列表,然后他或她可以单击标题中的一个以查看更多细节,然后需要有机会移动到原始列表中的下一个文档而无需返回并且点击另一个标题。Solr在其随机字段值更改时更改文档的分数
在查看文档时发生变化:其动态字段被修改(或者创建不存在)以标记该文档已被查看(用于其他搜索)。
我面临的问题是,当文档被更改并重新编制索引以保留这些更改时,有时(并非总是,这是非常令人不安的)其在相同查询结果集中的位置变化(换句话说,因为在浏览按照其中一个文档字段排序的结果时不会发生分数变化)。所以,“上一页”/“下一页”导航无法正常工作。
我没有在字段上使用任何自定义加权或助推器来计分分数。此外,浏览过程中更改的动态字段不参与用于获取记录集浏览的查询。
所以,问题是:对查询中未包含的文档字段的修改是否可以改变其相关性分值?如果可以的话,那我该如何控制呢?
UPDATE
我做了一些测试,并可以添加以下内容:如果没有字段被修改的结果甚至设立
文档的更改它的地方 - 只是请求文件并重新对其字段进行索引而不对其字段进行任何更改,这会在下次执行同一索引时执行相同的查询时发生。
即使结果集显式排序(“first_name DESC”),也会发生这种情况,所以不涉及分数(取决于更新日期)。文档保持不变,其字段结果集按排序相同,但其位置发生更改。
还不知道如何避免这种情况。
谢谢,出于某种原因,我确信对参与查询的字段所做的更改不会影响计算得分。 在我的情况下,有必要将此字段编入索引,因为还有另一个查询,我需要过滤仅查看或仅查看过的文档。缓存也不适合,因为用户应该浏览整个结果集,而不仅仅是通过页面(好吧,缓存仍然可行,老实说在资源方面可以忍受,但不够优雅)。 我会尽量提高搜索字段并告诉它是否有效。 – Yuriy 2011-06-07 07:45:07
只是注意到,当结果按照其他字段而不是分数排序时也会发生。这怎么可能?我想如果指定了排序并且明确地没有分数(比如,排序就像“first_name DESC”),它不会影响排序。但是,它似乎确实如此。我怎样才能摆脱这一点? – Yuriy 2011-06-08 14:11:18
好吧,看起来像提升作品,但没有效果。如果我提高搜索的领域,所有的比赛都会得到同样的提升,而且最近重新编制索引的文件仍然会在相关性上产生一些差异,从而产生差异。应该有一种方法可以从排序中完全排除上次更新的日期,但是我找不到它... – Yuriy 2011-06-08 14:50:22