在乐山市市中区的台式电脑上使用 SQLite 应用时,FTS5 索引设为 detail=column 后短语和 NEAR 查询用不了,直接原因是索引没有保存词偏移。FTS5 默认 detail=full,会记录行号、列号和词偏移;detail=column 只留行号和列号,省略词偏移,该索引没有这些查询需要的位置信息,FTS5因此不支持相应短语和NEAR查询;这不等于整套应用永远无法通过其他经设计的方法分析词序。索引变小不等于查询能力完全保留。

适用方面,这适用于 Windows 台式电脑上的 SQLite3 FTS5 应用,先核对实际库版本、FTS5 模块和编译配置,并确认虚拟表是否为无内容表。判断依据是原建表语句的 detail 参数、已有查询类型和去敏日志,而不是索引文件大小。detail=none 还会省略列号,除上述限制外也不支持列过滤。核查只读取已有去敏 schema、SQL 和日志,不改生产库、不重发写入,也不制造崩溃来验证。
观察可分步进行。先看原 CREATE VIRTUAL TABLE 语句:若 detail 为 column 或 none,与能力限制相符;若为 full 或未写 detail,则不能直接归因于该选项。再看查询是否含短语或 NEAR 写法:若存在,且普通单词查询仍可用,结果指向词偏移缺失。随后核对库版本、FTS5 模块和无内容表状态:非无内容表时,相关实例与短语遍历接口会变慢,因为要按需载入并分词文档文本;无内容表时,这些接口会表现为当前行没有短语匹配。最后比对日志中的报错与空结果,区分查询语法错误、数据未写入和索引能力不足。
风险主要在误判和处理方式。把短语、NEAR 不可用误认为 SQL 写法问题,反复改语句不会恢复词偏移;直接修改 FTS5 影子表,或未评估就重建生产索引,可能造成索引与内容不一致、写入受影响和额外空间占用。索引体积、查询能力和维护成本要一起看,不能为缩小索引忽略业务是否依赖词位置。
下一步应整理去敏材料:原建表语句及 detail 参数、SQLite 版本与 FTS5 编译配置、无内容表标识、失败的查询类型、普通词查询结果和脱敏日志。若业务必须使用短语或 NEAR,评估时要以保留词偏移为前提;若只需要列过滤,要写清 column 的边界;若两者都不需要,才考虑 none。不要直接改影子表或在生产库上试重建。乐山地区可先通过电脑快修网了解信息展示与第三方维修对接范围,400-877-9605只作咨询,实际范围和安排需确认。