utilizando la búsqueda de esfinge con mongodb como fuente de datos
sphinx (1)
Decidimos usar mongodb para alguna aplicación web (en lugar de mysql) pero queremos permanecer con la esfinge para indexar / buscar todos los datos almacenados en mongodb. como el id-objeto mongodb es un hash por defecto, y queremos seguir con esto, ahora hay un problema con el uso de la esfinge. Como se dice en la documentación de la esfinge:
TODAS LAS IDENTIFICACIONES DE LOS DOCUMENTOS DEBEN SER NÚMEROS INTEGEROS NO CERO ÚNICOS Y ÚNICOS (32 BITS O 64 BITS, DEPENDIENDO DE LOS AJUSTES DE TIEMPO DE CONSTRUCCIÓN)
así que ... ¿cuál es la mejor manera de resolver este problema ... cómo podemos mapear el id-objeto mongodb a un entero que no es cero (y viceversa)?
ACTUALIZAR
La respuesta de Casey es la dirección correcta a considerar, sin embargo, resulta que los atributos de cadena están en la versión dev actual solo disponible para la fuente de datos SQL. para xmlpipe es necesario aplicar un parche a la fuente de pago. Más información sobre esto se puede encontrar en el foro de la esfinge .
No puede usar el ID de objeto como ID de documento de Sphinx: los ID de objeto de MongoDB son más grandes que el tamaño máximo de ID de documento de Sphinx.
En su lugar, podría incrementar una ID única mientras genera el XML que Sphinx procesará (supongo que está utilizando xmlpipe para obtener sus datos Mongo en Sphinx?) Y almacenar la ID del objeto MongoDB como un atributo de cadena en Sphinx.
Necesitará la última versión de desarrollo de Sphinx para hacer esto; vea mi respuesta a esta pregunta para obtener un poco más de detalle: Sphinx sin usar una identificación de auto_increment