Было бы хорошо добавить туда кусок текста где замечено искомое слово (как в обычных поисковиках).
Думал над этим. Дело в том, что робот при индексации удаляет не только HTML-теги и всё такое, но и лишние данные из текста (в частности, знаки препинания), повторяющиеся слова, а также слова, длина которых меньше трёх символов.
В результате из текста:
Если Вы обнаружили ошибку в проекте, у Вас есть замечания по его работе или предложения по улучшению скрипта, не поленитесь и зарегистрируйтесь в BugTracker-е проекта, где Вы сможете быстро связаться с автором проекта и сообщить ему всё необходимое.
получится что-то вроде:
если обнаружили ошибку проекте вас есть замечания его работе или предложения улучшению скрипта поленитесь зарегистрируйтесь где сможете быстро связаться авторо сообщить ему всё необходимое
Для нас с Вами абракадабра, а для поиска — самое оно. Ничего лишнего, ровно то, что нужно.
Но из этого бреда обратно получить исходный текст невозможно.
Тут два варианта:
1. Сохранять в ещё одно поле необработанный текст.
2. При поиске обращаться к конкретной (найденной) странице, анализировать её и получать необходимый текст
Минусы есть у обоих вариантов:
1. На больших объёмах данных приведёт к быстрому расходу свободного места, отведённого для БД.
Многие динамические сайты сейчас генерируют очень много страниц при сравнительно небольших объёмых информации (у меня самого был сайт, на котором было всего около сотни статей, но который при этом состоял из ~20000 динамически создаваемых страниц).
2. Дело в том, что обращение к странице идёт через HTTP-протокол, а не через файлы (ведь, сами понимаете, если страница имеет адрес
http://www.site.ru/about/me, то это вовсе не значит, что на диске существует папка «about», а в ней — файл «me»). А он (HTTP-протокол) медленный.
К тому же страницу нужно обработать (то есть ещё раз удалить теги, проанализировать текст, найти искомые слова). Если поиск искомых слов в БД происходит мгновенно (СУБД так устроены, чтобы искать максимально быстро), то PHP так быстро работать не умеет.
И вот вышеперечисленное (скачивание и анализ)
нужно будет применить к каждому результату поиска. То есть, если выводится 10 результатов на страницу, то это лишние 5-6 секунд работы скрипта, что неприемлемо.
Из обоих вариантов (если бы приходилось выбирать) я бы склонился к первому, потому что время работы скрипта для меня на первом месте. Однако пока я эту функцию внедрять не буду.
Что до последних запросов, до 98% пользователей это не нужно и неинтересно. Кому интересно, что искал Вася Пупкин на сайте двое суток назад?