2017-04-26 5 views
0

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ügen
integer :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.

Antwort

0

Nachdem ich mich gefragt hatte, warum die aktualisierte Sunspot-Konfiguration nicht funktioniert, schlug mir jemand vor, zu prüfen, ob der Frühling in unserer Produktionsumgebung lief. Aus irgendeinem Grund war es das und es verhinderte, dass die neue Sunspot-Konfiguration jemals wieder initialisiert wurde. Nach dem Töten aller laufenden Instanzen des Frühlings und dem erneuten Einsatz der App wurden die neuen Änderungen aufgenommen und die Dinge scheinen zu funktionieren.

Verwandte Themen