【发布时间】:2012-06-12 23:56:18
【问题描述】:
我有一张包含单词列表的表格。
单词 VARCHAR(16)
我需要创建一个反向索引。 IE。单词“apple”将索引为“elppa”,单词“banana”索引为“ananab”等等。
另外,是否可以索引单词的一部分?例如,跳过第一个/最后 1 或 2 个字符:
苹果(苹果) anana(香蕉)
这些事情可能吗?
【问题讨论】:
-
添加一个带有反向文本的新列并在那里建立索引。
我有一张包含单词列表的表格。
单词 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)
【讨论】: