![]() Обычно владельцы сайта не пытаются изобрести велосипед, используя в качестве поисковой системы скрипты от Google или Яндекс. Достоинства метода в том, что встраиваются эти модули достаточно легко (по многих CMS и конструкторах сайтов они уже есть), ищут данные по сложным схемам запросов, причем в зону обработки попадают только страницы нашего сайта – ну чем не прелесть? А ведь можно щелкнуть тумблером и искать страницы в Большой Сети. Плохого ничего нет, кроме естественной преграды в виде того, что под поиск могут попадать только проиндексированные страницы сайта. Если сайт старый, это не составляет проблемы, а если на него постоянно добавляется новый контент, то по нему-то как раз поиска и не будет. Обидно же? А если это не просто сайт, а магазин, где новинки до индексации покроются пылью? В общем, приходится придумывать обходные маневры. Заметим часто, что поиск даже в этом случае часто перекладывают на плечи модулей из CMS, а затем долго тестируют «попадание в цель». Другим же подавай собственное решение проблемы. Давайте-ка подумаем, как оно может выглядеть – вдруг кто-то все же напишет универсальную поисковую систему по сайту. По идее, примитивные программы поиска учат писать на любом языке программирования. Суть их – обработка текста, где каждое отдельное слово запоминается в уникальном виде в списке. Количество совпадений отражается в счетчике, а дополнительный список представляет собой набор индексов к конкретным документам. В приложении баз данных такой метод называется отношением «один-ко-многим». В дальнейшем поиск по отдельному слову требует прохода по первому списку, а затем заголовки документов или их части выводятся как результат. Количество страниц и объем отображаемого смежного текста можно менять. Если идет поиск по набору слов, то требуется несколько проходов – в зависимости от булевой операции И, ИЛИ, NOT и т.д. После сбора всех слов идет группировка индексов из второго списка, чтобы найти для них общий документ. Прямой поиск фразы можно вести напрямую по контенту, игнорируя знаки препинания. Такой анализ сулит немало математических развлечений и тупиков. В частности, нужно как-то предусмотреть наличие словарей, чтобы различать слова по их корню, но в целом вопрос решаем. |