Определение соответствующих индексов для индексации базы данных - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно определить и создать индексы для 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 --- Запрос примеров:

  1. Когда пользователь вводит новый текст для перевода, приложение возвращает предварительно определенное количество существующих записей перевода, где содержимое исходного сегмента совпадает на определенный процент с введенным текстом.

  2. Когда пользователь запускает запрос вручную перечислить заранее определенное количество существующих записей перевода, где содержание исходного сегмента включает в себя слова, отмеченные пользователем (т.е. се поиск).

Поскольку существует только одна таблица для всех языковых комбинаций, первое условие для запроса будет language_combination (атрибут translation_record).

--- EDIT ---

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