Лучший способ сделать точное совпадение текста в rails / postgresql - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть текстовый столбец в таблице postgresql, где мне нужно искать точное совпадение очень часто и очень быстро.Это текстовый столбец на английском или китайском, длина которого, как правило, короткое предложение или абзац.

Каковы мои лучшие варианты?«Где» запрос?Как бы я проиндексировал столбец?

РЕДАКТИРОВАТЬ: моя миграция БД вызвала ошибку:

execute "CREATE INDEX idx_src ON translate_logs USING btree (src);"

Caused by:
PG::ProgramLimitExceeded: ERROR:  index row size 2936 exceeds maximum 2712 for index "idx_src"
HINT:  Values larger than 1/3 of a buffer page cannot be indexed.
Consider a function index of an MD5 hash of the value, or use full text indexing.

1 Ответ

0 голосов
/ 24 апреля 2019

Не уверен, что это лучший ответ, но отвечаю тем, что у меня есть:

Я создал миграцию с индексом хеша MD5 со значением:

execute "CREATE INDEX idx_src ON translate_logs ((md5(src)));"

Вот как я ищу в столбце точное совпадение.

TranslateLog.where('md5(src) = md5(?)', text)

Было бы здорово услышать о лучших ответах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...