AACSearch

Фиды XML, RSS, YML и YAML

Индексация RSS/Atom, фидов Яндекс Маркета (YML) и Google Merchant, любого XML-каталога или YAML-списка записей.

Два типа коннекторов читают структурированные файлы по публичному URL:

ТипЧто читаетТипичный источник
xmlRSS 2.0 / RSS 1.0, Atom, Яндекс Маркет YML, Google Merchant, любой XML с путём к записямблог, выгрузка для маркетплейса, XML из ERP
yamlYAML-список записей, словарь со списком под ключом, словарь записей_data Jekyll, каталоги статических сайтов

Сопоставление полей то же, что у json и csv (idField, titleField, contentField, urlField, tagsField), режимы full / delta с пропуском неизменённых документов по контрольной сумме, расписание, maxDocuments и pruneDeleted.

XML: определение формата

Формат определяется по корневому элементу; dialect нужен, только чтобы его переопределить.

КореньДиалектЗаписиПоля
<rss> / <rdf:RDF>rsschannel/itemid (guid или ссылка), title, content (content:encoded или description без HTML), url, published_at, author, category, теги из <category>
<feed>atomentryid, title, content / summary, url, published_at, updated_at, author, теги из category@term
<yml_catalog>ymlshop/offers/offerатрибут id, title (name или typePrefix vendor model), content (описание + производитель + параметры), price, oldprice, currency, category (название по shop/categories), category_path, vendor, vendor_code, available, image, barcode, params, поле param_<имя> на каждый <param name>
<rss> с тегами g:googlechannel/itemg:id, g:title, g:description, g:link, price и currency из g:price ("159.00 USD", "1.234,50 EUR"), sale_price, availability, available, brand, image, category (g:product_type), gtin, mpn
другоеgenericitemPathдочерние элементы и атрибуты записи

Поля диалекта добавляются в документ автоматически. Те, по которым нужны фильтры и фасеты (price как float, category, vendor, brand, currency как фасетные string), объявите в схеме индекса.

{
	"type": "xml",
	"config": { "url": "https://shop.example.ru/export/yml.xml", "maxDocuments": 5000 }
}

Произвольный XML: "itemPath": "catalog.products.product", "idField": "sku", "fields": ["price", "price.currency", "brand"].

YAML

Записи ищутся по порядку: itemPath; список верхнего уровня; единственный ключ со списком записей; словарь записей (ключ становится id); несколько документов ---. fields копирует дополнительные значения; путь через точку читает вложенные (dimensions.width → dimensions_width).

Безопасность и ограничения

  • Только публичные http(s) URL, проверяется каждый редирект.
  • Ответ больше 5 МБ отклоняется (TOO_LARGE).
  • XML с объявлениями <!ENTITY> отклоняется (INVALID_XML): сущности не раскрываются, внешние не загружаются. Обычный <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> допустим.
  • YAML: только базовая схема без пользовательских тегов, раскрытие алиасов ограничено (INVALID_YAML).
  • Повторяющаяся в фиде запись записывается один раз (побеждает последняя).

On this page