1. Форма для отправки. Поле ввода и кнопка (минимальное).
2. Обработка POST или GET в внешней программе (процессе) . Процесс открывает и слушает. Обрабатывает и возврашает на страницу что нашол. У меня ушел один вечер на WEB сервер, этот просто.
3. Робот.
--- Содержимое сайта чем то парсить и делать базу слов и выражений.
4. Дерево тегов (как старорежимный тематический каталог)
--- Набрать по тексту набор тегов. Желательно в виде дерева. Если сайт наполняете не вы, можно добавить метку "страница обновлена" (для робота) и пользователю интерфейс добавить ключи поиска в дерево.
--- Можно прикрутить самообучалку (если позволяет задача).
--- Можно эту базу выдавать в виде *.html
*Кремний
**Поликристал <--- ссылка на список страниц.
***импортный <- тоже ссылка...
***очистка
**Кусковой
**Техинческий
*Германий
Такое дерево реализуется ссылками например в каталогах или БД (лучше всего своей, живущей в GPU).
Открыв "кремний поликристал" попадет в каталог с "импортный" и "очистка". Дальше может быть ссылка на адрес и метка в странице или переход на эту же страницу с параметром для скрипта "перейди на ??? строчку и выдели ??? текст".
5. "Каталог мне не нравится, хочу искать сам". - после капчи (или ее аналога) запускается парсер файлов.
Вариант 1:("кремний кусковой")and(ГОСТ)
-- просто написать чтото вроде "GREP" но умнее, как старый Яндекс и Гугл.
Вариант 2:
Можно упростить жизнь в виде:
[x]Точное совпадение
настройки: [х]-Учет регистра. [2]-растояние между словами. <more>
[x]:[Кремний кусковой]
[ ][ <null> ]
[ ]Точное совпадение
[x]Должны быть в документе слова (фразы) на растоянии от искомого
настройки: [х]-Учет регистра. [4]-слов. [any]-символов. <more - спойлер>
[x][в наличии]
[ ][ null ]
[ ]Должны быть в документе слова на растоянии от искомого.
[ ]Дата изменения документа.
Реализуется как:
условия_поиска {
uchar ucType; <-- enum { .. }
параметры_для_словия xOpt;
char* pszText;
};
Запустить поток (и). Открыть документ из списка публичных файлов (как usermap у samba или exports.conf у nfs) .
Пробежаться по массиву проверяя выполнение этих условий. Если все верно, запомнить места и добавить в выдачу.
Если сделать в виде отдельной проги будет полезна и вне вашего продукта (или искать, возможно такая уже есть).
Тогда просто скармливать ей из списка публичных файлов файлы и смотреть выдачу.
Можно и к grep прикрутить обработку, кому как нравится (как поиск по манам).