Как создать поисковую систему?
Какии технологии, языки програмирования, базы даных, компютерная техника используются? На чем написаны yandex и google?
На сайте с 23.08.2005
23 июня 2006, 10:45
joost:
На чем написаны yandex и google?
Напечатаны кровью и потом. p.s. Яндекс на C++
Brexit — уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
На сайте с 13.01.2006
23 июня 2006, 10:50
echo(«Поисковик»);
?>?>
Где поисковик = Yandex, Google
На сайте с 31.01.2001
23 июня 2006, 10:50
Выделенные полосы в Москве (http://www.probkovorot.info) привели к снижению скорости до 23%.
На сайте с 01.09.2005
23 июня 2006, 11:07
/ru/forum/51206+%ED%E0%EF%E8%F1%E0%F2%FC+%EF%EE%E8%F1%EA%EE%E2%E8%EA+%ED%E0+php Здесь много написано про это. Начать нужно с определения основных тезисов поисковой машины. Дальше, если желание не пропадет, пойдет само.
Продаю вывески. Задарма и задорого (https://www.ledsvetzavod.ru/)
23 июня 2006, 16:30
Скрипт специальный нужен. Или можете свой написать.. 🙂 Я точно не знаю,но где то слышал.
На сайте с 29.10.2005
23 июня 2006, 16:54
Начинайте с простово. т.е. скрипт по индексации ресурсов и переносе инфы к себе. Далее устанавливайте параметры рулевантности по title, h1 и т.д. Ну а вот ссылочное.. что бы оно работало надо базу на 100000 страниц минимум. + мощные сервера для их анализа. А 1 и 2 стоит больших денег!
Как настроить свою поисковую систему. Пошаговое руководство
Рассказываю про инструмент, который позволит искать в интернете быстрее всех и легко находить то, что нужно. Речь о программируемой поисковой строке от Google. Мы создадим систему поиска по документам, а в конце поделюсь своими универсальными панелями.
165 показов
1.3K открытий
Programmable Search Engine (PSE) или программируемая поисковая строка — это надстройка в Google, которая позволяет каждому сделать свою уникальную систему поиска.
Важно заранее представить результат, который хотите получить, ну и знать несложные приемы, которые позволят достичь его: мы можем настроить отбор сайтов для поиска, тип файлов и приоритет показа сайта в выдаче. Рассказываю на примере поиска по типу файлов.
Как создать поисковую строку для поиска документов по типу файла?
Будем искать по всему интернету, в качестве параметров зададим различные типы файлов.
Выполним следующие шаги:
1. Заходим в свой аккаунт в Google
2. Переходим на сайт -> Начать
3. Выбираем название для своей системы, в моем примере это «Documents», нажимаем «Поиск во всем интернете», проходим Captcha -> Создаем
Создание поисковой строки
4. Систему создали, надо ее настроить
Настройка поисковой строки
5. Заходим в меню в «Функции в результатах поиска», затем в «Уточнения результатов поиска». Это самый важный пункт, здесь будем настраивать уточнения для фильтрации поиска.
Первое назовем PDF по типу нужных файлов.
При создании каждого уточнения у нас есть две опции на выбор:
— либо «Искать на сайтах с этим уточнением», тогда в выдачу не будут добавляться другие сайты;
— либо «Изменить приоритет показа сайтов с этим уточнением». Здесь можно задавать «веса» (приоритет) показу определенных сайтов, но и могут появляться другие сайты при минимальном совпадении с запросом. Ставим «1», то есть дадим самый высокий приоритет.
В поле «Дополнительно» введем оператор
ext:pdf
Это позволит ограничить выдачу только типом файлов PDF. Сохраняем уточнение.
По аналогии создадим уточнения для остальных типов файлов. Всего у нас будет восемь типов, каждый будет показываться в отдельной вкладке, это удобно.
Назовем DOC, зададим приоритет показа и введем в поле «Дополнительно» операторы поиска
ext:doc OR ext:docx
Таким образом мы создали еще одну вкладку в результатах, где увидим документы Microsoft Word старого (doc) и нового (docx) форматов.
Создадим остальные уточнения:
Таблицы XLS (Excel Spreadsheets) -> ext:xls OR ext:xlsx OR ext:csv
Презентации PPT (PowerPoint Files) -> ext:ppt OR ext:pptx
TXT (Text Docs) -> ext:txt OR ext:rtf
WPD (Word Perfect Docs) -> ext:wpd
ODT (OpenOffice Docs) -> ext:odt OR ext:ods OR ext:odp
ZIP (Compressed Files) -> ext:zip OR ext:rar OR ext:7z
Задаем уточнения
6. Наша система готова. Она ищет по разным типам документов, находит старые и новые версии файлов, показывает в отдельных вкладках разные типы файлов, делает сортировку по релевантности и дате. Вот так она выглядит:
Панель для поиска по документам
Готовые панели для поиска
По ссылке Поиск по документам вы найдете результат того, что у нас получилось.
В строке не забывайте добавлять “ ” для поиска точного соответствия.
Вот еще две универсальные системы для ежедневного использования:
Поиск видео по самым популярным хостингам и стриминговым площадкам.Есть возможность искать в Архиве Интернета, на локальных видео-хостингах по странам. В общем, можно найти много интересного.
Здесь, кроме поиска по имени и фамилии (можно в кавычках), не забываем использовать спец. символы хэштег # и юзернейм @. Также доступен поиск по фото.
Какие еще панели можно создать?
В примере мы рассмотрели первые простые шаги, а развитие этой темы имеет большой потенциал: мы можем создавать действительно уникальные инструменты.
— поиск по фото, тогда в уточнениях зададим типы файлов jpg, jpeg, png, bmp, gif;
— поиск товаров на торговых площадках: Amazon, Ebay;
— поиск по сервисам видео-игр;
— поиск по сайтам с обзорами и отзывами: TripAdvisor, Google Reviews, Airnbnb;
— поиск бизнес-информации по компании;
— отслеживание появления файлов, которые появляются на одном или нескольких доменах компании.
Если вы хотите больше узнать о настройке своей поисковой строки
— изучите поисковые операторы, они сделают инструмент еще точнее. Вот так я настраивала поиск видео на сайте Архива Интернета с помощью операторов.
Как и зачем я создал свой поисковик Pick: история создания и примеры кода
Рассказ о написании собственного поискового движка, который умеет индексировать сжатый HTML, а также позволяет ранжировать выдачу на основе рейтинга.
Дмитрий Мальцев
ведущий full-stack программист в RevolveR Labs
Поскольку Яндекс не захотел парсить мои сайты сославшись на то, что они не умеют обрабатывать контент в формате deflate мне захотелось разобраться в чем дело и попробовать написать свой поисковый сервис. Вообще служба техподдержки Яндекс оказалась для меня бесполезной, поскольку два дня Платоны доказывали мне, что сайты на Revolver CMF отдают битую кодировку. В то же время это был просто сжатый в deflate HTML. В итоге я решил написать свой индексатор, который умеет индексировать сжатый HTML и не только.
Создавать было решено антибюрократический Open Source поисковик, ранжирующий результаты в выдаче на основе голосов зарегистрированных пользователей без участия модерации.
Название мы с друзьями выбрали созвучно всем известной Picus Networks из мира компьютерной игры DeusEx. Осталось создать два алгоритма Pick для выполнения запросов и Picker для индексации контента.
Как создавался Pick
Можно было реализовать поисковую систему отдельно, но я использовал framework RevolveR, который предоставляет доступ к API работы с базой данных и ее кэширование, обработку POST и GET запросов с защитой, а также fetch API для динамических запросов.
А после интеграции Pick стал частью ядра. Скачать RevolveR CMF можно со страницы проекта GitHub.
Создаем индекс в базе данных
Очевидно, что нам нужен свой поисковый индекс, который будет храниться в базе данных. Для этого сформируем структуру на SBQ (structure based queries), которая хранится в файле /Kernel/Structures/DataBase.php:
$STRUCT_INDEX = [ 'field_id' => [ 'type' => 'bignum', // bigint 'auto' => true, 'length' => 255, 'fill' => true ], 'field_uri' => [ 'type' => 'text', // varchar 'length' => 1000, 'fill' => true ], 'field_host' => [ 'type' => 'text', // varchar 'length' => 200, 'fill' => true, 'index' => [ 'type' => 'simple' ] ], 'field_date' => [ 'type' => 'text', // varchar 'length' => 20, 'fill' => true ], 'field_hash' => [ 'type' => 'text', // varchar 'length' => 50, 'fill' => true ], 'field_title' => [ 'type' => 'text', // varchar 'length' => 600, 'fill' => true, 'index' => [ 'type' => 'full' ] ], 'field_description' => [ 'type' => 'text', // varchar 'length' => 250, 'fill' => true, 'index' => [ 'type' => 'full' ] ], 'field_content' => [ 'type' => 'text', // varchar 'length' => 9000, 'fill' => true, 'index' => [ 'type' => 'full' ] ] ];
Мы создали структуру будущей таблицы revolver_index, которую будут использовать модели для записи и хранения данных. Полям content , description и title назначаем полнотекстовый индекс для ускорения запросов SELECT, а для поля host укажем тип индекса simple (это поможет сделать быстрый поиск по всем индексированным ссылкам определённого ресурса).
Также у нас есть поля date и hash . Дата хранит последний момент индексации ресурса, а hash указывает на актуальность данных (если хэш заново полученной страницы не отличается от хранимого в БД значения, то обновление не выполняется).
Поле uri будет содержать полную ссылку страницы.
Теперь нам понадобится таблица в БД которая будет хранить рейтинги материалов в формате 5 звезд на основе голосов зарегистрированных пользователей (API для рейтингов есть и о том как оно работает чуть ниже).
Создадим еще одну структуру:
$STRUCT_INDEX_RATINGS = [ 'field_id' => [ 'type' => 'bignum', // big int 'auto' => true, // auto increment 'length' => 255 ], 'field_user_id' => [ 'type' => 'bignum', // big int 'length' => 255, 'fill' => true ], 'field_index_id' => [ 'type' => 'bignum', // big int 'length' => 255, 'fill' => true, 'index' => [ 'type' => 'simple' ] ], 'field_rate' => [ 'type' => 'minnum', // big int 'length' => 1, 'fill' => true ] ];
Таблица очень простая. Она хранит ID ресурса, ID пользователя и оценку.
Давайте зарегистрируем структуры в схеме базы данных:
// Compare DBX Schema $DBX_KERNEL_SCHEMA = [ . // Pick index 'index' => $STRUCT_INDEX, 'index_ratings' => $STRUCT_INDEX_RATINGS,
Таблицы сформированы и описаны и нам осталось выполнить SBQ через API RevolveR CMF для создания этих таблиц в базе данных:
// Create table index $dbx::query('c', 'revolver__index', $STRUCT_INDEX); // Create table index $dbx::query('c', 'revolver__index_ratings', $STRUCT_INDEX_RATINGS);
После выполнения этого кода в базе данных появится таблицы revolver__index и revolver__index_ratings, а мы сможем использовать API моделей для работы с ними.
Регистрируем сервис индексации и страницу поиска
В RevolveR CMF есть такое понятие как сервисы. Они используются для выполнения каких-то задач при обращении к ним с аргументами, но не имеют кэширования и не обрабатываются шаблоном.
Чтобы зарегистрировать сервис индексации просто пропишем параметры в файл /private/config.php:
// search engine crawler 'picker' => [ 'title' => 'Search engine crawler', 'param_check' => [ 'menu' => 0, 'hidden' => 1 ], 'route' => '/picker/', 'node' => '#picker', 'type' => 'service', 'id' => 'picker', ],
Здесь все предельно просто. Type service указывает на то, что URL /picker/ будет служить обработчиком запросов, которые избегают систему кэширования фреймворка и игнорируют формирование шаблона.
Теперь сразу же зарегистрируем путь, который будет отображать страницу выполнения поисковых запросов к базе данных. Для этого в этом же файле добавим строки:
// search engine service TRANSLATIONS[ $ipl ]['Pick'] => [ 'title' => TRANSLATIONS[ $ipl ]['Pick'], 'param_check' => [ 'menu' => 1 ], 'route' => '/pick/', 'node' => '#pick', 'type' => 'node', 'id' => 'pick', ],
Параметр menu указывает на то, что мы отображаем пункт в главном меню, а type равное node указывает на то, что регистрируемый путь является узлом, который подвергается кэшированию по умолчанию и может быть подключен к шаблону.
Мы зарегистрировали 2 URI и теперь нужно подключить обработчики сервиса и узла. Поскольку было решено сделать Pick компонентом ядра, мы модернизируем файл /Kernel/Modules/Switch.php:
case '#pick': ob_start('ob_gzhandler'); // Search require_once('./Kernel/Nodes/NodePick.php'); break; case '#picker': ob_start('ob_gzhandler'); // Search require_once('./Kernel/Routes/RoutePicker.php'); break;
Этими строками мы создали подключение NodePick и RoutePicker, которые будут содержать основные исходные коды алгоритмов поискового движка. Нам достаточно всего 2 файла.
Индексатор URL Picker
Чтобы проиндексировать какой либо сайт мы должны иметь доступ по сети и уметь парсить сайты. Для этого была использована стандартная библиотека cURL для PHP.
Вот исходный код функции, которая открывает URL и достает содержимое страницы:
function getUri(string $url): iterable < $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Picker/1.0'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_DNS_SHUFFLE_ADDRESSES, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FILETIME, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $data = curl_exec($ch); if( !curl_errno($ch) ) < $i = curl_getinfo($ch); $ssl_pass = (int)$i['ssl_verify_result']; if( !(bool)$ssl_pass ) < $ok = true; >switch( $i['http_code'] ) < case 200: case 301: case 302: $ok = true; break; default: $ok = null; break; >switch( explode(';', $i['content_type'])[0] ) < case 'application/xhtml+xml': case 'text/html': $ok = true; break; default: $ok = null; break; >list($hdr, $body) = explode("\r\n\r\n", $data, 2); $headers = explode("\r\n", $hdr); $xh = []; foreach( $headers as $h ) < $r = explode(':', $h, 2); $xh[ $r[0] ] = trim($r[1]); >if( isset( $xh['Content-Encoding'] ) ) < switch( $xh['Content-Encoding'] ) < case 'gzip': case 'deflate': case 'compress': $data = gzuncompress($body); break; >> else < $data = $body; >if( isset( $xh['Date'] ) ) < $date = DateTime::createFromFormat('D, d M Y H:i:s O', $xh['Date']); $date = $date->format('h:i d-m-Y'); > if( $data && $ok ) < curl_close($ch); return [ $data, $date ]; >else < curl_close($ch); return [ null, null ]; >> else < curl_close($ch); return [ null, null ]; >>
Работает алгоритм очень просто. При передаче URL происходит открытие web-страницы и обработчик проверяет корректность SSL соединения. Далее мы смотрим что тип документа характеризует ценные для нас данные HTML или Application xHTML, а также проверяем код ответа сервера. Все, что препятствует получению данных приводит к возврату значения null .
Дополнительно проверяем, что отдаваемый сервером контент может быть сжатым в gzip, deflate или compress.
Теперь нам нужна функция для работы с самим полученным документом. Мы должны извлечь текстовое содержимое без тегов и получит все ссылки на странице:
Технологии Google
Не пользуетесь Android? Посмотрите инструкции для других браузеров.
Инструкция о том, как изменить поисковую систему по умолчанию в браузере на устройстве Android
Шаги
- Откройте приложение, которое называется «Интернет» или «Браузер».
- Нажмите на телефоне или в правом верхнем углу окна браузера.
- На устройстве Pixel нажмите НастройкиОсновныеПоисковая система. На других телефонах Android выберите НастройкиОбщиеПоисковая система по умолчанию.
- Нажмите Google.
Не пользуетесь Android? Посмотрите инструкции для других браузеров.
- О Google
- Продукты Google
- Конфиденциальность
- Условия
- Справка
- Изменить язык или регион
