Преобразовать строку слов в уникальный номер - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю свой собственный спеллер, который должен корректировать слово или количество слов в соответствии с пользовательским исправлением.

Для этого я создал таблицу SQL, которая имеет следующую структуру:

|---------------------|-------------------------|----------------------------|
|      id (int11)     |  keyword (varchar 255)  |  correction (varchar 255)  |
|---------------------|-------------------------|----------------------------|
|          1          |        Facebooc         |          Facebook          |
|---------------------|-------------------------|----------------------------|
|          2          |       I lovi you        |         I love you         |
|---------------------|-------------------------|----------------------------|
|          3          |     This is a tsst      |        This is a test      |
|---------------------|-------------------------|----------------------------|
  • Столбец ключевого слова помечается как уникальный и имеет индекс (как *). 1032 *)

  • ключевое слово может содержать более одного слова (пакет слов)

  • Когда я получаю запрос с новым ключевым словом, мой код выполнение запроса на выборку, чтобы проверить, есть ли исправление этого ключевого слова Speci c (если ключевое слово не существует, оно вставляет новое ключевое слово в таблицу без исправления.

Теперь я ожидаю, что эта таблица быть очень большим (около 10 миллионов строк и даже больше), поэтому я подумал, что размещение уникального флага и индекса в столбце ключевого слова не очень хорошая идея.

  1. Правильная ли структура хорошо для моих нужд?

  2. Я подумал, может быть, добавить еще один столбец int в таблицу и проверить, есть ли способ преобразовать каждое ключевое слово в уникальное число, так что, возможно, поиск будет простым и выберите данные? думаете, что это хорошая идея?

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете добавить столбец с короткой контрольной суммой, предоставленной функцией crc32 () . Однако crc32 () не генерирует уникальный индекс. Вероятность того, что 2 строки генерируют одинаковую контрольную сумму, больше 0.

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

Если найдены одинаковые контрольные суммы, необходимо проверить сами ключевые слова.

Приносит ли этот метод преимущества в скорости, также сильно зависит от производительности системы базы данных.

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