utilizzando la ricerca sfinge con MongoDB come origine dati
Domanda
Abbiamo deciso di utilizzare MongoDB per alcune applicazioni web (invece di mysql), ma vogliamo rimanere con sfinge per l'indicizzazione / ricerca tutti i dati memorizzati in MongoDB. come MongoDB ID dell'oggetto è un hash per default - e vogliamo stare con questo - ora c'è un problema nel usando sfinge. Come si dice nella documentazione sfinge:
Tutti gli ID documento deve essere unico UNSIGNED diverso da zero numeri interi (32-bit o 64-bit, a seconda delle impostazioni tempo di costruzione).
così ... qual è il modo migliore per risolvere questo problema ... come possiamo mappare il MongoDB ID dell'oggetto ad un non-zero intero (e viceversa)?
Aggiorna
La risposta di Casey è la direzione giusta di esaminare, anche se a si scopre attributi stringa sono in dev-attuale versione disponibile solo per l'origine dati SQL. per xmlpipe è necessario applicare una patch alla fonte cassa. maggiori informazioni su questo si possono trovare nel sfinge forum .
Soluzione
Non è possibile utilizzare l'ID oggetto come un documento di identità Sphinx - MongoDB opporsi ID sono più grande della dimensione massima di ID dei documenti di Sphinx
.Al contrario, si potrebbe incrementare un ID univoco durante la generazione del XML che Sfinge sta per processare (sto supponendo che si sta utilizzando xmlpipe per ottenere i dati in Mongo Sfinge?) E memorizzare l'ID oggetto MongoDB come un attributo di stringa in Sfinge.
È necessaria l'ultima versione di sviluppo di Sfinge per fare questo - vedere la mia risposta a questa domanda per un po 'più in dettaglio: Sphinx senza utilizzare un auto_increment id