2012-06-08 16 views
5

Mam tabelę z listą słów.częściowe indeksowanie mysql, indeksowanie wsteczne

słowo VARCHAR (16)

muszę utworzyć odwrotnej indeksu. to znaczy. słowo "jabłko" będzie indeksowane jako "elppa", słowo "banan" jako "ananab" i tak dalej.

Co więcej, możliwe jest indeksowanie, powiedzmy, części słowa? Takie jak, pomiń pierwsze/ostatnie 1 lub 2 znaki:

pple (Apple) Añana (bananowe)

te rzeczy są możliwe?

+0

Dodaj nową kolumnę z odwrotnym tekstem i zbuduj tam indeks. – Scoutman

Odpowiedz

5

Możesz utworzyć indeks w polu, którego długość jest ograniczona do długości prefiksu, co oznacza, że ​​uwzględnione zostaną tylko pierwsze n znaków, ale nie można tego zrobić z dowolną pozycją początkową i końcową. Przeczytaj więcej na ten temat na stronie dokumentacji mysql: CREATE INDEX.

W tym przypadku po prostu utworzę kolejną kolumnę, wykorzystam funkcję mysql REVERSE, aby ją wypełnić i utworzyć na niej indeks, w ten sposób otrzymasz pole do wyszukiwania na odwrót oryginalnego słowa.

Inne bazy danych, takie jak Postgresql, pozwalają na index an expression, co pozwoli skutecznie indeksować reverse(col_name) bez tworzenia dodatkowej kolumny. Więc to możliwe, po prostu nie teraz z mysql. (od wersji 9 potgresql ma odwrotną() natywną wersję)