我有一个包含单词列表的表格。
单词 VARCHAR(16)
我需要创建一个反向索引。 IE。单词“apple”会索引为“elppa”,单词“banana”会索引为“ananab”等等。
还有,是否可以索引,比如说,单词的一部分?例如,跳过前/后 1 或 2 个字符:
苹果(苹果) anana(香蕉)
这些事情可能吗?
最佳答案
您可以在受前缀长度限制的字段上创建索引,这意味着将只考虑前 n 个字符,但您不能使用任意的开始和结束位置。在 mysql 的 CREATE INDEX 上阅读更多相关信息文档页面。
在这种情况下,我只是创建另一个专栏,使用 mysql 的 REVERSE函数来填充它并在其上创建一个索引,这样你就可以得到一个字段来搜索原始单词的反义词。
Postgresql 等其他数据库允许您 index an expression ,这将有效地允许您索引 reverse(col_name)
而无需创建额外的列。所以这是可能的,只是现在不使用 mysql。 (因为我相信版本 9 potgresql 有 reverse() native)
关于mysql部分索引、反向索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10957053/