Мне нужно определить и создать индексы для postgresql БД, используемой для памяти переводов.
Это связано с этим ( вопросом о дизайне базы данных относительно производительности ), который я разместил и упрощенный дизайн следует за этим ( Как проектировать базу данных для словаря перевода? ) ответ. Единственное отличие в том, что у меня есть сегмент (в основном предложение вместо слова).
Таблицы:
I. languages
ID NAME
---------------
1 English
2 Slovenian
II. segments
ID CONTENT LANGUAGE_ID
-------------------------------
1 Hello World 1
2 Zdravo, svet 2
III. translation_records
(TranslationRecord имеет больше столбцов, здесь опущено, например, домен, пользователь и т. Д. c.)
ID SOURCE_SEGMENT_ID TARGET_SEGMENT_ID
--------------------------------------
1 1 2
Я хочу проиндексировать таблицу сегментов для поиска в существующих переводах и поиска в комбинации слов в БД.
У меня такой вопрос, достаточно ли создать индекс для таблицы сегментов для столбца CONTENT или я должен также токенизировать столбец CONTENT в новый столбец TOKENS и индексировать также?
Кроме того, я упускаю что-то еще, что может быть важно для создания таких индексов?
--- EDIT --- Запрос примеров:
Когда пользователь вводит новый текст для перевода, приложение возвращает предварительно определенное количество существующих записей перевода, где содержимое исходного сегмента совпадает на определенный процент с введенным текстом.
Когда пользователь запускает запрос вручную перечислить заранее определенное количество существующих записей перевода, где содержание исходного сегмента включает в себя слова, отмеченные пользователем (т.е. се поиск).
Поскольку существует только одна таблица для всех языковых комбинаций, первое условие для запроса будет language_combination
(атрибут translation_record
).
--- EDIT ---