You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让#成为MariaDB全文搜索有效字符?修改latin1字符集后未生效

如何将#设为MariaDB全文搜索的有效单词字符(实现标签搜索)

需求

需要让#成为MariaDB全文搜索中的有效单词字符,使类似#sunset的标签能被单独搜索到。我的caption列已创建全文索引。

环境与示例数据

  • 数据库默认字符集:通过以下SQL确认是latin1
    SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "o810"
    
  • 示例数据:A sample photo with three keywords #sunset "sunset $sunset.

已执行的操作

  1. 修改charsets/latin1.xml中的<ctype>映射,将#标记为大写字母类(假设这样能使其成为有效单词字符),修改后的代码如下:
<ctype>
<map>
 00
 20 20 20 20 20 20 20 20 20 28 28 28 28 28 20 20
 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
 48 10 10 01 10 10 10 10 10 10 10 10 10 10 10 10
 84 84 84 84 84 84 84 84 84 84 10 10 10 10 10 10
 10 81 81 81 81 81 81 01 01 01 01 01 01 01 01 01
 01 01 01 01 01 01 01 01 01 01 01 10 10 10 10 10
 10 82 82 82 82 82 82 02 02 02 02 02 02 02 02 02
 02 02 02 02 02 02 02 02 02 02 02 10 10 10 10 20
 10 00 10 02 10 10 10 10 10 10 01 10 01 00 01 00
 00 10 10 10 10 10 10 10 10 10 02 10 02 00 02 01
 48 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
 01 01 01 01 01 01 01 10 01 01 01 01 01 01 01 02
 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
 02 02 02 02 02 02 02 10 02 02 02 02 02 02 02 02
</map>
</ctype>
  1. 删除原有全文索引,重启MariaDB服务后重新创建全文索引
  2. 验证索引内容:执行以下SQL导出索引
    SET GLOBAL innodb_ft_aux_table = 'o810/photo'
    
    随后查询SELECT * FROM INNODB_FT_INDEX_TABLE,结果中仅能看到sunset,无法找到#sunset,说明#未被识别为有效单词字符。

已尝试但无效的操作

  • 以不同编码格式打开并保存charsets/Index.xml和charsets/latin1.xml
  • 调整映射中#对应的位置,避免字节计数错误
  • 多次启停MariaDB服务
  • 多次删除并重建全文索引
  • 查找各类相关资料

恳请提供可行的解决思路。


内容的提问来源于stack exchange,提问作者nusbaum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:07:51