Сергей, спасибо большое за ответ!
Да. Типа xmlpipe2, csvpipe или tsvpipe. Пишете небольшой скрипт, который делает то, что вам нужно, а на выходе даёт xml / csv или tsv.
Я верно понимаю, что тут вы предлагаете сливать данные скриптом из двух БД в xml/csv а затем уже индексировать его?
Да. Просто указываете 2 source в индексе. Manticore Search Manual: Creating an index > Local indexes > Plain and real-time index settings
Вот этот способ выглядит привлекательнее… Не могли бы подсказать, как потом пользоваться таким индексом, в документации не смог найти ничего подобного.
Т.е. как по нему искать, когда у меня в source 1 основные данные, а в source 2 город? И надо отфильтровать данные из source 1 по городу (в обоих присутствует идентификатор пользователя)…
Может быть все на самом деле проще, но не могу посмотреть что в итоге получается индексе… При указании в индексе двух индексатор падает вот с такой ошибкой:
ERROR: index 'products': attribute count mismatch (me=profileSource, in=productsSource, myattrs=4, inattrs=8).
Не подскажите от чего она может быть? По отдельности оба source индексируются нормально.
Конфиг такой:
source profileSource : configurationSourceProfiles{
sql_query_pre = SET @a := 1;
sql_query = \
SELECT \
@a := @a + 1 as sphinx_internal_id, \
profiles.id as profile_id, \
profiles.city_id as city_id \
FROM profiles
sql_attr_bigint = sphinx_internal_id
sql_attr_string = profile_id
sql_attr_string = city_id
}
source productsSource : configurationSourceMarketPlace{
sql_query_pre = SET @a := 1;
sql_query = \
SELECT \
@a := @a + 1 as sphinx_internal_id, \
products.id as product_id, \
products.url as url, \
products.title as title, \
product_prices.value as price, \
product_prices.price_type_id as price_type_id, \
products.owner_id as owner_id, \
products.status as status, \
products.published as published, \
( \
SELECT JSON_ARRAYAGG(CONCAT(PP.parameter_id, ":", IF(PP.value_id IS NULL, PP.value, PP.value_id))) FROM product_parameters as PP WHERE PP.product_id = products.id \
) as product_params \
FROM \
products \
LEFT JOIN product_prices ON product_prices.product_id = products.id \
WHERE products.published = true
sql_attr_bigint = sphinx_internal_id
sql_field_string = title
sql_attr_string = product_id
sql_attr_string = owner_id
sql_attr_json = product_params
sql_attr_uint = price
sql_attr_bool = published
}
index products{
source = productsSource
source = profileSource
path = /var/lib/manticore/indexes/products
}