Re[7]: Требуется база данных с индексированием подстрок
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.01.04 10:08
Оценка:
Здравствуйте, Elifant, Вы писали:

E>Здравствуйте, Sinclair, Вы писали:


E>>>Что-то я не пойму... Т.е. Вы предлагаете использовать все ту же базу данных, но приделать к ней свой способ индексирования? А как?

S>>Очень просто. Заведешь еще одну табличку, в которой для каждого файла будет length(name) записей:
S>>(FileID, StartPos, TruncatedName).
S>>По truncatedName сделаешь индекс.
S>>Тогда поиск будет таким:
S>>
S>>select FileID, StartPos from indexTbl where TruncatedName like 'searchstr%'
S>>

S>>И все. Пополняешь табличку в триггере.

E>Такой вариант рассматривался, но смущает многократное хранение кусков имени файла.

E>
SELECT AVG(LENGTH(name)) FROM files

E>Средняя длина имени файла: 14.0829
E>Для каждого файла будет 14 записей, их общая длина = 1 + 2 + ... + 14 = 15 * 14 / 2 = 105
E>+ на поля номера файла и позиции.
E>Получаем дополнительно 105 / 14 = почти 8тикратное увеличение объема + ещё довольно много на индекс.
E>Пока база занимает 100 метров (и это только для четверти всей сети) и в принципе влазит в оперативку. Вот с гигабайтной базой уже хуже...
E>Но, как я понимаю, это единственный вариант, который не требует больших затрат труда, а лишь денег на винт и память... Пойду все-таки попробую сделать так.
E>В любом случае спасибо.
... << RSDN@Home 1.1.2 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.