использование поиска sphinx с mongodb в качестве источника данных

Мы решили использовать mongodb для некоторых веб-приложений (вместо mysql), но хотим остаться с sphinx для индексации / поиска всех данных, хранящихся в mongodb. поскольку идентификатор объекта mongodb по умолчанию является хешем - и мы хотим остаться с этим - теперь есть одна проблема с использованием sphinx. Как сказано в документации sphinx:

ВСЕ ИДЕНТИФИКАТОРЫ ДОКУМЕНТОВ ДОЛЖНЫ БЫТЬ УНИКАЛЬНЫМИ БЕЗ ПОДПИСАННЫХ ЦЕЛОГО НОМЕРА (32-БИТНЫМ ИЛИ 64-БИТНЫМ, В ЗАВИСИМОСТИ ОТ НАСТРОЕК ВРЕМЕНИ).

Итак ... как лучше всего решить эту проблему ... как мы можем сопоставить идентификатор объекта mongodb с ненулевым целым числом (и обратно)?

ОБНОВЛЕНИЕ

Ответ Кейси - это правильное направление для изучения, однако оказывается, что строковые атрибуты в текущей версии dev доступны только для источника данных sql. для xmlpipe необходимо применить патч к источнику оформления заказа. дополнительную информацию об этом можно найти на форуме сфинксов.


person aurora    schedule 05.11.2009    source источник


Ответы (1)


Вы не можете использовать идентификатор объекта в качестве идентификатора документа Sphinx - идентификаторы объектов MongoDB больше, чем максимальный размер идентификаторов документов Sphinx.

Вместо этого вы можете увеличить уникальный идентификатор при генерации XML, который будет обрабатывать Sphinx (я предполагаю, что вы используете xmlpipe для передачи данных Mongo в Sphinx?), И сохранить идентификатор объекта MongoDB как строковый атрибут в Sphinx.

Для этого вам понадобится последняя разрабатываемая версия Sphinx - подробнее см. Мой ответ на этот вопрос: Sphinx без использования идентификатора auto_increment

person outcassed    schedule 05.11.2009
comment
большое спасибо ... кажется, это именно то, что мне нужно! Обычно у меня нет проблем с запуском разрабатываемой версии. завтра попробую и поставлю «ответил», если все работает как положено. еще раз спасибо! - person aurora; 05.11.2009