Поисковый движок

Bakti9rov

!*|=?
Поисковый движок

Приветствую.

Недавно занялся написанием поискового движка для новостной ленты. Новостная лента есть древовидный раздел на сайте (модуль к системе управления сайтом), с категориями и проч. Обновляется примерно по 2-3 записи/день. Есть архивация, выделение важных новостей, поиск по дате. Задача - сделать поиск по ключевым словам.

Сначала была мысль создать индексатор новостной ленты - так и сделал. Тексты, заголовки новостей я проиндексировал - получилась таблица, в которой записаны все слова, встречающиеся в новостях (предварительно происходит отсев по длине). Но ждал сюрприз - размер всей базы увеличился в 1,3 раза. :( Перспектива того, что в таблице с проиндесированными словами будет по миллиону записей, вынудила искать другие решения.

Поэтому не стал париться и все сделал по релевантности... через match...against.

На сайте есть форма, которая отсылает ключевые слова, фильтры, сортировочные флажки (использую битовые маски) - движок ищет, регистрирует результаты поиска и совпадения, а далее редиректит на search/какие_то_ключевые_слова/. Там уже идет отборка из совпадений. Есть ограничения на флуд (частое использование поиска с одной сессии) и длину слов.

Хотелось бы узнать, правильное ли направление выбрано вообще ? Не сдохнет ли мой движок с тем, как новостная лента разрастется в нечто огромное? Кто как решал подобные задачи? :)

ЗЫ. Вот структура некоторых таблиц:
таблица matches:
id/session_id/search_id(=md5($keywords))/keywords/mask/filter/time/count/microtimer

таблица matches:
id/result/relev

таблица news: FULLTEXT-поля caption/title/text.
 

kruglov

Новичок
Не сдохнет ли мой движок с тем, как новостная лента разрастется в нечто огромное?
Сдохнет, конечно, место на диске закончится - и опаньки.
А серьезно - не о чем беспокоиться, не те масштабы. Те масштабы - если новости будут добавляться сотнями и тысячами.
 
Сверху