Показать сообщение отдельно
Старый 23.10.2003, 19:58     # 1
NarcomBAT
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?