Хотел прояснить для себя несколько моментов. Понимаю что есть куча готовых решений, но ведь всегда интересно построить свой модифицированный велосипед. Так был изобретен мопед
---
Итак:
1. Поиск по предварительно проиндексированной базе или "поиск на лету"?
1.1.Поиск по индексу:
+Меньшая ресурсоемкость и большая скорость при поиске(чем больше пространство данных по которым проводится поиск, тем ощутимее выигрыш)
+Все плюсы универсальности вытекающие из рекурсивной индексации в случае ее использования (см. п 2.2.)
-необходимость регулярно проводить индексацию (доиндексацию, актуализацию фрагментов индекса, полную переиндексацию.
-Гораздо БОльшая нагрузка на вычислительные мощности сервера, при разовом индексировании чем при разовом "Поиске на лету".
-Необходимость написания такого сложного компонента как "паук" или индексатор.
-Необходимость в доп. дисковом пространстве для хранения индекса.
1.2. "поиск на лету":
+Проще код, не нужно писать "паука"
+Не нужно заботится об индексировании
+Отсутствие большой разовой нагрузки в виде индексирования
+Любые изменения содержимого страниц, тут же будут доступны через поиск.
- БOльшая нагрузка на мощности сервера при разовом поиске (особенно актуально при поиску по большому объему плохо структурированных данных).
- Как следствие плохая масштабируемость решения.
- При организации морфологического поиска, дополнительное увеличение времени поиска и нагрузки в связи с обработкой корней морфем, и подключением словарей (при индексации подключение разовое)
---
Короче, я принимая во внимание все вышесказанное, я решил остановиться на поиске с прединдексацией.
---
2. Выбор стратегии индексации. Индексировать по базе? Или по страницам сайта, передвигаясь по линкам (т.н. рекурсивный поиск)?
Каждый из вариантов имеет свои достоинства и недостатки. Дополните, может я чего-то не понимаю.
2.1.Индексация по базе:
+Относительно малая ресурсоемкость
+Относительно высокая скорость индексации
+Меньший объем кода паука
-Не универсален при подключении индексации контента хранящегося не в базе, контента хранящегося в другой БД, стороннего контента, модулей отличающейся архитектурой хранения данных
--------
2.2.Рекурсивная индексация:
+Абсолютная универсальность. Индексируется все и вся связанное линками в пределах заданного URL.
+Возможность индексировать внешние ресурсы, и несколько ресурсов разом, независимо от архитектуры хранения данных.
-Относительно более высокая ресурсоемкость
-Относительно низкая скорость индексирования
-Более сложный и объемный код индексатора
---
Вот тут серьезная диллема. Склоняюсь к рекурсивному поиску. Что скажите?
_____________
Меньше кода - меньше багов ©