2012-06-08 427 views
5

我有一個包含單詞列表的表。mysql部分索引,反向索引

字VARCHAR(16)

我需要創建一個反向索引。即。單詞「apple」將會索引爲「elppa」,單詞「banana」爲「ananab」等。

此外,是否有可能索引,例如,這個詞的一部分?如,跳過第一/最後一個1個或2的字符:

pple(蘋果) 阿納納(香蕉)

這些東西可能?

+0

添加一個新的列與反向文本,並在那裏建立索引。 – Scoutman

回答

5

您可以在受前綴長度限制的字段上創建索引,這意味着只會考慮前n個字符,但不能使用任意開始和結束位置。在mysql的CREATE INDEX文檔頁面上閱讀更多關於它的信息。

在這種情況下,我只需製作另一列,使用mysql的REVERSE函數來填充它並在其上創建一個索引,這樣您就可以在字段中搜索原始單詞的背面。

其他數據庫(如Postgresql)允許您使用index an expression,這將有效地允許您在不創建額外列的情況下索引reverse(col_name)。所以這是可能的,只是現在沒有與MySQL。 (自從版本9 potgresql有反向()原生我相信)