Question

Nous avons décidé d'utiliser MongoDB pour une application Web (au lieu de MySQL) mais nous voulons rester avec pour l'indexation sphynx / recherche toutes les données stockées dans MongoDB. comme MongoDB objet id est un hachage par défaut - et nous voulons rester avec cela - maintenant il y a un problème dans l'utilisation sphynx. Comme il est dit dans la documentation sphynx:

  

TOUS IDS DOCUMENT DOIVENT ÊTRE UNIQUE UNSIGNED NON ZERO INTEGER CHIFFRES   (32 bits ou 64 bits, en fonction des réglages du temps de construction).

... quelle est la meilleure façon de résoudre ce problème ... comment cartographier le mongodb objet id à un entier non nul (et retour)?

UPDATE

La réponse de casey est la bonne direction pour examiner, mais il se trouve à des attributs de chaîne sont dans la dev-version actuelle disponible uniquement pour la source de données SQL. pour xmlpipe il est nécessaire d'appliquer un correctif à la source de votre commande. plus d'informations sur ce qui peut être trouvée dans le forum sphynx.

Était-ce utile?

La solution

Vous ne pouvez pas utiliser l'ID d'objet comme id document Sphinx - MongoDB ID objet sont plus grandes que la taille maximale des ID de document de Sphinx

.

Au lieu de cela, vous pouvez incrémenter un identifiant unique tout en générant le XML Sphinx va traiter (je suppose que vous utilisez xmlpipe pour obtenir vos données mongo dans Sphinx?) Et stocker l'ID d'objet MongoDB comme un attribut de chaîne dans Sphinx.

Vous aurez besoin de la dernière version de développement du Sphinx pour le faire - voir ma réponse à cette question un peu plus en détail: Sphinx sans l'aide d'un identifiant auto_increment

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top