Простой рабочий узел, который сканирует карты сайта, чтобы поддерживать индекс Algolia в актуальном состоянии.
Он использует простые селекторы CSS, чтобы найти фактическое текстовое содержимое для индексации.
Это приложение использует библиотеку Algolia.
Этот скрипт следует запускать через crontab, чтобы регулярно сканировать весь веб-сайт.
<loc>
, т. е. urlset/url/loc
.npm i algolia-webcrawler -g
git clone [email protected]:DeuxHuitHuit/algolia-webcrawler.git
git clone https://github.com/DeuxHuitHuit/algolia-webcrawler.git
algolia-webcrawler --config config.json
перейдите в корень проекта и запустите node app
.
Конфигурация выполняется через файл config.json.
Вы можете выбрать файл config.json, хранящийся в другом месте, используя флаг --config.
node app --config my-config.json
Как минимум, вы можете отредактировать config.json, чтобы установить значения для следующих параметров: «app», «cred», «indexname» и хотя бы один объект «sitemap». Если у вас есть несколько файлов Sitemap, перечислите их все: вложенные файлы Sitemap не будут сканироваться.
Большинство опций являются обязательными. Никаких значений по умолчанию не предусмотрено, если не указано иное.
Название вашего приложения.
Объект учетных данных Algolia. См. «cred.appid» и «cred.apikey».
Ваш идентификатор приложения Algolia.
Ваш сгенерированный ключ API Algolia.
Простая задержка между каждым запросом на сайт в миллисекундах.
Максимальное количество миллисекунд, в течение которых запись может существовать без обновления. После каждого запуска приложение будет искать старые записи и удалять их. Если вы не хотите удалять старые записи, установите это значение на 0.
Строка фильтра, которая будет применяться при удалении старых записей. Полезно, если вы хотите сохранить старые записи, которые не будут обновляться. Будут удалены только старые записи, соответствующие фильтру.
Максимальный размер записи в байтах, отправляемой в Algolia. Значение по умолчанию — 10 000, но может варьироваться в зависимости от разных планов.
Если запись слишком велика (в зависимости от maxRecordSize), сканер удалит значения из текстового ключа. Используйте этот атрибут, чтобы указать, какие ключи следует удалять, если запись слишком велика.
Объект, содержащий различные значения, связанные с вашим индексом.
Ваше индексное имя.
Объект, который будет действовать как аргумент метода Algolia Index#setSetting
.
Пожалуйста, прочитайте документацию Algolia по этому вопросу. Можно использовать любой допустимый атрибут, задокументированный для этого метода.
Массив строк, определяющий, какие атрибуты являются индексируемыми, что означает, что по ним будет выполняться полнотекстовый поиск. Полный список возможных атрибутов см. в разделе «Сохраненный объект».
Массив строк, определяющий, какие атрибуты можно фильтровать. Это означает, что вы можете использовать их для исключения некоторых записей из возврата. Полный список возможных атрибутов см. в разделе «Сохраненный объект».
Этот массив должен содержать список объектов карты сайта.
Карта сайта — это действительно простой объект с двумя строковыми свойствами: url и lang. Свойство 'url' представляет собой точный URL-адрес этой карты сайта. Свойство lang должно указывать основной язык, используемый URL-адресом, указанным в карте сайта.
Объект, содержащий различные параметры http.
Строка аутентификации в форме username:password
узла. Если вам не нужна аутентификация, вам все равно нужно указать пустую строку.
Объект, содержащий селекторы CSS для поиска содержимого на страницах html.
CSS-селектор для заголовка страницы.
CSS-селектор для описания страницы.
CSS-селектор для изображения страницы.
CSS-селектор для заголовка страницы.
CSS-селектор для свойства «ключ». Вы можете добавлять собственные ключи по своему желанию.
Селекторы также могут быть определены с использованием длинной формы (т.е. как объекта), что позволяет указывать для них пользовательские свойства.
Имя атрибутов для поиска значений. По умолчанию — ['содержание', 'значение'].
Фактический селектор CSS, который нужно использовать.
Максимальное количество узлов для проверки.
Объект, содержащий селекторы CSS для поиска элементов, которые не подлежат индексации. Эти селекторы CSS сопоставляются для каждого узла и проверяются по всем его родительским узлам, чтобы убедиться, что ни один из его родительских узлов не исключен.
CSS-селектор исключенных элементов для текста страницы.
CSS-селектор исключенных элементов для свойства «ключ». Ключ должен совпадать с тем, который используется в селекторах[key].
Объект, содержащий строку форматирования. Их значения удаляются из исходного результата, полученного с помощью соответствующего селектора CSS.
Строка, которую нужно удалить из заголовка страницы. Также может быть массивом строк.
Строка, которую нужно удалить из указанного ключа. Также может быть массивом строк.
Функция анализа, используемая для форматирования значения. Поддерживаемые типы: «integer», «float», «boolean» и «json».
Значение по умолчанию, вставленное для указанного ключа. Будет установлен, если значение ложно.
Список файлов JavaScript для загрузки пользовательского кода перед сохранением записи. Единственное требование — реализовать следующий интерфейс, где record
— это объект, который нужно сохранить, а данные — это HTML-код.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
Все URL проверяются по всем элементам в черном списке. Если полный URL-адрес или его компонент пути находится в черном списке, он не будет проиндексирован.
Сохраненный объект на сервере Algolia выглядит следующим образом.
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
Следует отметить, что текст представляет собой массив, поскольку мы пытались сохранить связь исходного текстового узла -> фактического значения. Алголия прекрасно с этим справится.
Можно настроить один URL-адрес для отправки пинг-запроса на веб-сервер после каждого сохраненного URL-адреса в Algolia. Веб-сервер получит сообщение со следующей информацией:
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
Индексация выполняется автоматически при каждом запуске. Чтобы настроить работу индексирования, см. параметр конфигурации index.settings.
Массачусетский технологический институт
Сделано с любовью в Монреале компанией Deux Huit Huit.
Авторские права (с) 2014-2019