2016-04-25 43 views
0

Ich erstelle einen interaktiven Suchdienst für einen Kunden, und ein Teil von dem, was wir brauchen, ist die Möglichkeit, Dokumenten "Tags" hinzuzufügen. Diese Tags sind sowohl bereits vorhanden als auch benutzerdefiniert. Das Schema wurde eingerichtet, um dies zu unterstützen, aber ich habe Probleme mit Solarium PHP beim Aktualisieren eines Resultsets.Solarium - Ich muss die schreibgeschützte Ergebnisliste aktualisieren

Wenn der Benutzer z. B. in unserer Datenbank nach "Überlauf" sucht und 1-1000 + Ergebnisse zurückgibt, müssen diese das gesamte Ergebnis mit einer beliebigen Anzahl von Tags versehen können.

Also nehme ich die Ergebnismenge von execute() und bin derzeit nicht in der Lage, die zurückgegebenen Dokumente zu ändern - die Ausnahme ist "Ein schreibgeschütztes Dokument kann nicht geändert werden".

Irgendwelche haben einen Workaround dafür?

Antwort

1

Für eine aktualisierbare Dokument, das Sie diese Klasse verwenden sollte: Solarium \ querytype \ Update \ query \ Document

Solarium verwendet diesen Dokumenttyp als Standard für SELECT-Abfragen für zwei Gründe:

In den meisten Fällen ist keine Update-Funktionalität erforderlich, so dass es nur Overhead ist, um die Verwendung von Solr als DB zu unterbinden, wie beim Lesen - Ändern - Speichern. Fast alle Schemas haben Nur-Index-Felder. Es gibt keine Möglichkeit, den Wert von dort Felder zu lesen, so dass diese Daten beim erneuten Speichern des Dokuments verloren gehen! Updates sollten normalerweise basierend auf Ihre Ursprungsdaten (d. H. Die Datenbank) erfolgen. Wenn Sie wirklich sicher sind, dass Sie Solr-Daten aktualisieren möchten, können Sie eine schreibgeschützte Dokumentklasse als Dokumenttyp für Ihre ausgewählte Abfrage festlegen, ändern Sie die Dokumente und verwenden Sie in einer Updateabfrage.

http://solarium.readthedocs.org/en/stable/documents/

Verwandte Themen