@torinchik

Как реализовать sphinx поиск товаров с динамическим курсом валют?

Добрый день!
Есть интернет магазин с 10 - 20 млн товаров, БД mysql. Хотелось бы реализовать поиск на sphinx , но есть проблема цены у товаров заполнены в разных валютах(рубли, евро , доллары) и по цене реализована сортировка. Курс сейчас часто меняется и не хотелось полностью постоянно переиндексировать индекс при смене курса. Есть ли какие то варианты реализации такой схемы у Sphinx?
Сейчас это все работает через JOIN в одной таблице товары в другой стоимость валюты. На сайт все выводиться в рублях.
Спасибо
  • Вопрос задан
  • 2510 просмотров
Решения вопроса 1
Добрый день.
Можете реализовать так:
1. В индекс занесите только цену в исходной единице и поле отвечающие за тип валюты.
2. В запрос к сфинксу передаём текущий курс:
SELECT 
 (IF(PriceFlag=0,Price*cursDol,IF(PriceFlag=1,Price*cursUE,Price))) AS PriceRub
FROM Index
ORDER BY PriceRub


Или можно создавать глобальную переменную сервера(а точнее для каждой валюты)
SET [INDEX index_name] GLOBAL @user_variable_name = (int_val1 [, int_val2, ...])
И в запросе его использовать:
(Это происходит раз в 10 минут)
SET GLOBAL @cursDol=50
SET GLOBAL @cursUE=70

--Запрос
SELECT 
 (IF(PriceFlag=0,Price*@cursDol,IF(PriceFlag=1,Price*@cursUE,Price))) AS PriceRub
FROM Index
ORDER BY PriceRub
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы