schema.xml 中 field 标签不着色是因为 Sublime 默认 XML 语法不识别 Solr 特有标签,需安装 SolrQuery 插件并设置语法为 SolrConfig;其 scope 为 entity.name.tag.solr,可通过 Developer: Show Scope Name 验证。

为什么 schema.xml 里的 field 标签不着色?
Sublime Text 自带的 XML 语法只认 W3C 标准标签,schema.xml 中的 <field>、<dynamicField>、<copyField> 等 Solr 特有元素没有 scope 标记,全被当作文本渲染——结果是标签名、name 属性、type 值全部灰成一片,改错一个 indexed="true" 都容易漏看。
装了 SolrQuery 插件后,它会注册专用的 SolrConfig 语法,为这些标签打上 entity.name.tag.solr 等 scope。验证是否生效:光标停在 <field> 上,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name,看到类似 entity.name.tag.solr 才算成功。
- 若仍显示
text.xml或meta.tag.xml,检查Preferences → Settings右侧是否有"ignored_packages": ["SolrQuery"]—— 有就删掉 - 删完后执行
Ctrl+Shift+P→Reload Syntax Definitions - 右下角点击语法名 →
Set Syntax: SolrConfig(不是 XML)
solrconfig.xml 中的 <filterCache> 和 class 属性怎么分色?
默认情况下,<filterCache> 标签名和它的 class 属性值(如 solr.FastLRUCache)同色,但实际配置中这两者语义完全不同:<filterCache> 是缓存类型声明,class 是具体实现类,混色易导致复制粘贴时误删或错改。
SolrQuery 插件已对常见标签(<filterCache>、<queryResultCache>、<requestHandler>)打上 entity.name.tag.solr scope,但对属性名(如 class、size、maxIdleTimeSeconds)默认未标记。需手动补 scope 规则:
- 打开
Packages/User/SolrQuery.sublime-syntax - 在
contexts下找到main规则,插入匹配属性的正则(例如:- match: '\b(class|size|initialSize|maxIdleTimeSeconds)\b') - 给它分配新 scope,如
support.attribute.solr.cache - 再在配色方案(如
Packages/User/MyMonokai.sublime-color-scheme)的"rules"末尾加一条:{"name":"Solr cache attr","scope":"support.attribute.solr.cache","foreground":"#3498db"}
如何让 json.facet 和 [10 TO 20] 在 .json 文件里真正高亮?
直接把 Solr 查询写进 .json 文件时,"q": "price:[10 TO 20]" 整个值都被当作文本处理,q 键名、[、TO、json.facet 全部无区分——这不是插件失效,而是 Sublime 默认用 JSON 语法解析,根本不会深入字符串内容。
硬绑 .json 到 SolrQuery 语法最省事,但副作用明显:所有 JSON 文件(API 响应、配置文件)都会失去标准高亮。更稳妥的做法是语义隔离:
- 把 Solr 查询文件统一改后缀为
.solr.json - 编辑
Packages/User/SolrQuery.sublime-syntax,在file_extensions数组里加上"solr.json" - 用
Developer: Show Scope Name分别查json.facet、[、TO的实际 scope(常见为support.field.solr.facet、keyword.solr.range) - 在配色方案
"rules"里补对应规则,用hsla()或带 alpha 的十六进制(如#e74c3c80),避免深浅主题下翻车
项目级启用 Solr 高亮,避免污染全局 .json 关联
你团队的微服务项目里既有标准 config.json,又有 search-query.json,不能一刀切地让所有 .json 走 Solr 语法——否则开发看配置时满屏乱色,排查问题成本陡增。
Sublime 支持基于项目路径的语法覆盖,无需改后缀、不扰全局:
- 在项目根目录建
.sublime-project - 写入:
{"settings": {"syntax": "Packages/SolrQuery/SolrQuery.sublime-syntax"}} - 确保该文件里只含 Solr 查询相关 JSON(如
facets.json、filter-queries.json) - 重启 Sublime 或重新加载项目(
Project → Reload Project)
这个方案的边界很清晰:只有当前项目下、且明确置于该 .sublime-project 控制范围内的文件才启用 Solr 高亮,其他任何地方的 .json 都不受影响。容易被忽略的是,一旦项目结构变动(比如把查询文件挪到子目录),必须同步更新 .sublime-project 的 folders 设置,否则高亮会失效。


















