我有一张包含单词列表的表格。
单词 VARCHAR(16)
我需要创建一个反向索引。IE。单词“apple”将索引为“elppa”,单词“banana”索引为“ananab”等等。
另外,是否可以索引单词的一部分?例如,跳过第一个/最后 1 或 2 个字符:
pple (苹果) anana (香蕉)
这些事情可能吗?
您可以在受前缀长度限制的字段上创建索引,这意味着只会考虑前 n 个字符,但您不能使用任意开始和结束位置来执行此操作。在 mysql 的CREATE INDEX文档页面上阅读有关它的更多信息。
在这种情况下,我只需创建另一列,使用 mysql 的REVERSE函数将其填充并在其上创建索引,这样您就可以获得一个字段来搜索原始单词的反向。
其他数据库(如 Postgresql)允许您对表达式进行索引,这将有效地允许您在reverse(col_name)
不创建额外列的情况下进行索引。所以这是可能的,只是现在不使用mysql。(因为我相信版本 9 potgresql 有 reverse() native)