[DAN]
Старожил PHPClub
Огранизация структуры данных
Всем привет!
Имеется следующее:
*) Есть три строки; каждая длиной не более 3 символов
*) Эти 3 строки идут последовательно одна за другой.
*) Первая строка содержит как минимум 1 символ; оставшиеся две строки могут быть нулевой длины
*) Если вторая строка пустая, то третья строка тоже пустая.
*) Если вторая строка не пустая, третья может быть как пустой, так и не пустой
*) Все символы являются числами от 0 до 9
*) + Дана символьная строка длиной от 4 до 16 символов (включительно). Все символы - числа от 0 до 9
Необходимо:
Организовать структуру данных для хранения в БД, такую, чтобы обеспечить максимально эффективный поиск.
Критерий поиска такой:
В строке длиной 16 символов найти максимальное вхождение комбинации из трехсимвольных строк.
Трехсимвольные строки конкатенируются строго по порядку (без комбинаций).
Поиск в "длинной" строке должен вестить строго с первого символа.
Пример:
Три строковых триплета:
1) "264" "" ""
2) "264" "811" ""
3) "264" "811" "1"
и имеется строка "264811234567"
Тогда самый длинный триплет, который входит в эту строку, будет под номером 2.
Да, эти строковые триплеты хранятся в БД (PostgreSQL). Повторюсь, поиск вхождения триплета в данную "длинную" строку должен быть максимально быстрым.
Если есть идеи по организации данных и алгоритму (запросам к БД) поиска, буду рад их услышать!
Всем привет!
Имеется следующее:
*) Есть три строки; каждая длиной не более 3 символов
*) Эти 3 строки идут последовательно одна за другой.
*) Первая строка содержит как минимум 1 символ; оставшиеся две строки могут быть нулевой длины
*) Если вторая строка пустая, то третья строка тоже пустая.
*) Если вторая строка не пустая, третья может быть как пустой, так и не пустой
*) Все символы являются числами от 0 до 9
*) + Дана символьная строка длиной от 4 до 16 символов (включительно). Все символы - числа от 0 до 9
Необходимо:
Организовать структуру данных для хранения в БД, такую, чтобы обеспечить максимально эффективный поиск.
Критерий поиска такой:
В строке длиной 16 символов найти максимальное вхождение комбинации из трехсимвольных строк.
Трехсимвольные строки конкатенируются строго по порядку (без комбинаций).
Поиск в "длинной" строке должен вестить строго с первого символа.
Пример:
Три строковых триплета:
1) "264" "" ""
2) "264" "811" ""
3) "264" "811" "1"
и имеется строка "264811234567"
Тогда самый длинный триплет, который входит в эту строку, будет под номером 2.
Да, эти строковые триплеты хранятся в БД (PostgreSQL). Повторюсь, поиск вхождения триплета в данную "длинную" строку должен быть максимально быстрым.
Если есть идеи по организации данных и алгоритму (запросам к БД) поиска, буду рад их услышать!