已知限制与错误处理
已知限制
记录这些限制是为了如实报告结果,而不是静默隐藏:
- 作者匹配是在原始作者字符串上执行不区分大小写、折叠重音符号的子字符串测试。 它不会规范姓名顺序,因此
author:"Jane Doe"无法匹配{Doe, Jane}字段; 应改用姓氏检索(author:Doe)。子字符串匹配也意味着author:chen会同时 匹配Chen和Cheng。这便于检索,但引用前必须核实作者。 matched_entries统计通过结构化过滤的条目;它不反映有多少条目因 全文相关性阈值而被丢弃。- CJK 多关键词查询最适合连续子字符串(
时间序列);用空格分隔的 CJK 词语可能无法全部匹配。 - 多文件文献库不会自动合并。每个
.bib文件分别运行一次脚本。meta.parse_warnings列表会报告解析问题:因缺少闭合括号等结构缺陷而跳过的 条目、重复 citation key(受影响的每条结果也带有warnings字段),以及位于%标记后的条目(真正的 BibTeX 仍会解析这些条目)。 has:code是词边界启发式,不是语义分类器。它可以避免reported、encoder和barcode等子字符串误匹配,但不能理解否定语义 (without a linked repository仍会匹配),也不能排除dress code等泛化短语。- 紧凑查询中的未配对引号会触发 tokenizer 回退,而不是直接报错。双引号短语仍会 作为一组处理,单引号则按字面字符处理;该回退会以
query_tokenizer_fallback记录在meta.parse_warnings中。 - 年份消歧后缀支持一个小写 ASCII 字母,因此
2024a会按 2024 年参与过滤。 更长或大写的后缀不会被解释为 BibTeX 年份消歧标记。
错误处理
解析错误
如果 .bib 文件包含格式错误的条目,脚本会继续处理能够解析的有效条目。 当返回条目少于预期时,检查文件编码,并查找缺少闭合括号等明显结构损坏。
空结果集
当没有条目匹配时,按以下顺序建议放宽检索:
- 移除
has:约束,例如has:code - 扩大或移除年份范围
- 使用更少或更短的主题关键词
- 检查作者拼写,或尝试部分姓名匹配
大文件
辅助脚本采用线性扫描且不依赖外部解析器。对于很大的文献库,运行时间会按比例增长, 但 JSON 契约保持不变。