mysql partial indexing, reverse indexing

a 夏天 提交于 2019-12-22 05:07:49

问题


I have a table with a list of words.

word VARCHAR(16)

I need to create a reverse index. ie. word "apple" would index as "elppa", word "banana" as "ananab" and so on.

Also, is it possible to index, say, a part of the word? Such as, skip the first/last 1 or 2 characters:

pple (apple) anana (banana)

are these things possible?


回答1:


You can create an index on a field that's limited by prefix-length, meaning that only the first n characters will be considered, you can't do it with an arbitrary start and end position though. Read more about it on mysql's CREATE INDEX documentation page.

In this case I'd just make another column, use mysql's REVERSE function to fill it in and create an index on it, that way you get a field to search on for the reverse of the original word.

Other databases such as Postgresql allow you to index an expression, which would effectively allow you to index reverse(col_name) without creating the extra column. So it it's possible, just not with mysql right now. (since version 9 potgresql has reverse() native I believe)



来源:https://stackoverflow.com/questions/10957053/mysql-partial-indexing-reverse-indexing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!