Frage

Wir haben uns entschlossen, MongoDB für eine Webanwendung (anstelle von MySQL) zu verwenden, möchten aber bei Sphinx bleiben, um alle in MongoDB gespeicherten Daten zu indizieren/zu durchsuchen. Da das MongoDB-Objekt-ID ein Hash pro Standard ist-und wir möchten dabei bleiben-gibt es jetzt ein Problem bei der Verwendung von Sphinx. Wie es in der Sphinx -Dokumentation sagt:

Alle Dokument-IDs müssen eindeutig unsignierte Unno-Ganzzahl-Nummern sein (32-Bit oder 64-Bit, abhängig von den Bauzeiteinstellungen).

Also ... wie kann dieses Problem am besten gelöst werden? Wie können wir das MongoDB-Objekt-ID einer Ganzzahl ungleich Null (und zurück) abbilden?

AKTUALISIEREN

Die Antwort von Casey ist die richtige Richtung, in die sich jedoch herausstellen, dass die String-Attribute in der aktuellen Dev-Version nur für die SQL-DataSource verfügbar sind. Für XMLPipe ist es erforderlich, einen Patch auf die Kassequelle anzuwenden. Weitere Informationen dazu finden Sie in der Sphinx Forum.

War es hilfreich?

Lösung

Sie können die Objekt -ID nicht als Sphinx -Dokument -ID verwenden - MongoDB -Objekt -IDs sind größer als die maximale Größe der Dokument -IDs von Sphinx.

Stattdessen können Sie eine eindeutige ID inkrementieren, während Sie die XML generieren, die Sphinx verarbeitet (ich gehe davon aus, dass Sie XMLPipe verwenden, um Ihre Mongo -Daten in Sphinx zu bringen?) Und die MongoDB -Objekt -ID als Zeichenfolgenattribut in Sphinx speichern.

Sie benötigen die neueste Entwicklungsversion von Sphinx, um dies zu tun. Weitere Informationen finden Sie in meiner Antwort auf diese Frage: Sphinx ohne eine auto_increment id zu verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top