解析器: 在查找主内容节点时,尊重项目的根选择器
作者: ericholscher创建于 2026年8月20日更新于 2026年8月20日
标签Improvement
AddonsConfig.options_root_selector 允许项目告诉我们其主要内容的位置 - "页面的主要内容的 CSS 选择器。将其留空以自动检测。" 我们只会将其发送给 addons 客户端。服务器端的解析器会忽略它。readthedocs/search/parsers.py 中的 GenericParser._get_main_node() 总是自动检测: [role=main], 然后是 <main>, 然后是第一个 <h1> 的父节点, 然后是 <body>.
因此, 一个项目设置了选择器 因为 自动检测选择了错误的节点, 但仍然会被搜索索引, 并为文件树差异计算哈希值, 从该项目告诉我们不要使用的节点。 遵守该选择器需要几行代码, self.project 已经在那里可用。 在执行此操作之前, 需要了解的两件事: 它会改变这些项目的搜索结果, 不仅仅是它们的文件树差异, 而且每个受影响项目的每个页面都会重新计算一次哈希值 - 它们的下一个 PR 预览报告每个文件都已修改, 直到基础版本再次构建。
内容来源: readthedocs/readthedocs.org