Подтвердить что ты не робот

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

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

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

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

UPDATE

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

4b9b3361

Ответ 1

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

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

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