Ich benutze Sunspot Solr (2.2.7), um ein AR-Modell in unserer App zu suchen und zu indizieren, aber wir machen hier etwas anderes. Der eigentliche indexierbare Inhalt wird in einem serialisierten Feld gespeichert und ich habe die Klassen Sunspot :: Adapters :: InstanceAdapter und Sunspot :: Adapters :: DataAccessor erweitert, um unseren Anwendungsfall zu unterstützen und diese Adapter registriert.Sonnenflecken Solr neue Felder werden nicht indiziert
Ich definiere die Wende Felder in einer config/initializers/sunspot.rb Klasse und eine Beispielkonfiguration sieht aus wie
Sunspot.setup(Office) do
time :published_at, trie: true
integer :id
text :name
integer :region_id
boolean :is_active
text :address
text :city
text :postal_area
string :postal_code
string :abbreviation
integer :person_ids, multiple: true
string :supported_locales, multiple: true
string :slug
end
Alles scheint auf Entwicklung zu arbeiten und auf die Produktion (Ubuntu 16.04 läuft Solr 6.4.2).
Das Problem, auf das ich stoße, tritt auf, wenn ich ein neues Feld zum Index hinzufügen und versuchen muss, diese Änderung zur Produktion zu bekommen. Wenn ich die obige Linie zum Sunspot.setup
blockieren hinzufügeninteger :department_ids, multiple: true
zum Aufbau des Amtes und Wieder Index, es funktioniert auf meinem lokalen Rechner, aber wenn ich die Produktion bereitstellen, wird das neue Feld nicht erhalten abgeholt.
Ich habe die verwaltete Schemadatei aktualisiert, um das neue Feld aufzunehmen, aber nachdem ich die Modelle erneut indiziert habe, wird das neue Feld immer noch nicht angezeigt, wenn ich im Abfragetool nach Offices abfrage.
Eine Probe JSON-Antwort für eine Office seine Rückkehr sieht ungefähr so aus:
{
"id":"Office 1",
"type":["Office", "Model"],
"class_name":["Office"],
"published_at_dt":"2017-03-22T23:32:22Z",
"id_i":1,
"search_name_s":"atlanta",
"region_id_i":2,
"is_active_b":true,
"postal_code_s":"30309",
"abbreviation_s":"ATL",
"person_ids_im":[513,
571,
1392,
1722,
1723],
"supported_locales_sm":["en"],
"slug_s":"houston",
"name_text":["Houston"],
"address_text":["1 Main Street<br/>Suite 1"],
"city_text":["Houston"],
"postal_area_text":["TX"],
"_version_":1565750688671072256},
}
ich die log_level auf DEBUG gesetzt habe, aber die SOLR Update-Anweisung mir nicht viel erzählen.
SOLR Request (1.6ms) [ path=update parameters={} ]
Ich habe versucht, in die Rails-Konsole auf die Produktion gehen, manuell
Sunspot.remove_all!(Office)
läuft und dann meine Indextask läuft, aber das Feld noch nicht abgeholt hat aufzustehen.
Ich bin unsicher, wie dieses Problem weiter zu debuggen.
Ist das Problem in einer Änderung, die ich zu verwaltete-Schema vornehmen muss (es gibt keine schema.xml in meinem Verzeichnis conf, nur die verwaltete-Schema-Datei). Das Feld ist dort definiert und das Ausführen von Abfragen für dieses Feld funktioniert, gibt jedoch 0 Ergebnisse zurück.
Ist das Problem, dass der Sunspot.setup-Code in meinem Initialisierer einen vollständigen Stopp von Apache2 und Sunspot erfordert, um meine Änderungen aufzuheben? Ich habe das auch versucht, aber keine Veränderung gesehen.
Oder ist das Problem, dass ich nicht die Standard-Rails AR Include aufgrund der etwas anderen Anwendungsfall wir haben und es fehlen Methoden, die ich in meinem Adapter/indexable Klasse implementieren müssen?
Jede Hilfe zu diesem würde sehr geschätzt werden.