先不要反复改查询词,也不要急着重建索引。多数“对象不见了”的情况不是数据消失,而是默认过滤器把结果限定在某个子集,或分词后生成的检索词与原文写法不一致。要找回对象,先判断它属于哪一类隐藏:被过滤条件排除、被分词切碎后无法匹配、还是被结果排序压到后面。三种原因对应三种动作,做错顺序会把可核对的问题变成猜测。
默认过滤器通常作用于字段,例如只查某状态、某时间范围或某类型。分词则作用于文本本身,把原文拆成更小的可检索单元。两者的证据不同:如果对象在放宽过滤条件后立刻出现,问题在过滤;如果放宽过滤后仍找不到,而用原文中的单个词能命中,问题在分词。
一个可操作的检验是:先记下当前过滤条件的完整组合,再逐条移除,每次只移除一个,观察对象是否回到结果中。这个动作的价值在于,你能得到“哪个条件把它挡在外面”这一条可核对事实,而不是笼统地认为“系统有问题”。如果移除全部过滤后仍无结果,下一步才转向分词检查。
找到隐藏原因后,处理方式取决于这个对象后续是否还要被反复查询。
这三种取舍不必同时使用。多数场景下,先做逐条移除定位原因,再决定是保留加例外,还是改写匹配方式,就已经足够。
多个角色对“对象是否应该出现”有不同理解时,争论通常停留在“它明明在”和“我搜不到”。把分歧转成项目,需要固定三样东西:查询用的原始文本、当前生效的过滤条件、以及判定命中的标准。
一个假设的例子:甲认为某条记录应该出现在默认列表里,乙认为它属于被排除的类型。核对时不要比较各自的印象,而是让双方各自写出自己使用的过滤条件,再一起逐条移除,看记录在第几步出现。若在移除“类型”这一条后出现,分歧就收敛为一个具体问题:这条记录的类型归属是否正确。接下来要改的是类型字段,而不是查询词或分词配置。
这个做法的结果是,下一步动作由证据决定,而不是由谁的声音大决定。如果逐条移除后记录始终不出现,那么分歧点转移到文本匹配,需要检查原文写法与分词结果,而不是继续争论过滤条件。
对象找回后,容易再次消失。要减少复发,至少固定两件事:一是记录本次生效的过滤条件组合和查询文本,作为下次比对的基线;二是记录该对象的匹配方式,说明它是靠原文命中、靠拆分后的词命中,还是靠例外标记命中。
如果对象是靠放宽过滤才出现的,说明默认条件与它的属性冲突,需要确认这是预期行为还是配置错误。如果对象是靠单个词命中、完整写法命不中,说明分词方式与查询习惯不一致,需要决定统一改哪一侧。两种情况都需要有人确认,而不是默认“找回来就行”。具体工具中过滤器的名称、位置和可选项,各实现不同,需要以你实际使用的版本为准进行核对。