| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Структура данных для индексатора - как?
есть газета за 5 лет выложенная в нет в виде html файлов. объем всех файлов примерно 100-150 Mb надо их проиндексировать а затем осуществлять поиск по этой базе
по определенным соображениям я отказался от встроенного fulltex index (хотя может быть и напрасно) я написал один скрипт который использовал БД с тремя таблицами word(id_word,word) article(id_article,article) index(id_article,id_word,occurence) принцип работы такой: вытаскивает из html файлавсе слова,берет по одному каждое слово проверяет если такое слово в таблице word если есть берет его id_word если нет записывает его туда с новым id_word, в таблице article делаем запись о индексируемом файле и берем его id_article, в таблице index ищем индексировали ли мы уже стсатью с такими id_article,id_word если да то увеличиваем occurence на 1 если нет то пишем новую запись примерно так все и было но потом я заметил что по мере того как я добавляю новые статьи скорость поиска резко снижается и уже по базе со статьями за 1 год поиск производился за 17-19 секунд что по моему очень долго а в таблице index больше 1.5 миллиона записей Я решил переделать метод индексации таблицы word и article остались без изменения а вместо таблицы index сделал для каждой быквы алфавита свою таблицу типа a_index, b_index и т д теперь за два 2 года поиск идет примерно за 2 секунды но помоему это не эффективная структура получается через 5 лет поиск по архиву будет 5 секунд? Кто знает как организовать правильное хранение индекса в базе данных какая должна быть структура базы? например как хранятся данные в google.com? кто что знает? или перейти на встроенный fulltext index? |