2012-05-15 2 views
6

Ich hatte pg_search arbeiten auf meiner Rails 3.2.3 App mit Multi-Search. Dann habe ich den von nertzy (Autor von pg_search) bereitgestellten Initialisierer in this post. implementiert. Nun, wenn ich eine Suche laufen bekomme ich folgende Fehlermeldung:Fehler mit pg_search multisearch nach der Initialisierung von Tsearch, Trigramm

PG::Error: ERROR: operator does not exist: text % unknown 
LINE 1: ... ((coalesce("pg_search_documents"."content", '')) % 'searchterm... 
                  ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 

Meine Ansicht mit diesem Code wiedergegeben wird:

<%= @pg_search_documents.each do |pg_search_document| %> 
    <%= pg_search_document.searchable.title %> 
<% end %> 

Der Rest meiner Setup gefunden werden kann here. Jede Hilfe ist sehr geschätzt.

+0

Haben Sie eine Antwort darauf gefunden? Ich stoße auf dasselbe Problem. –

+0

Hey John. Ich versuche mich daran zu erinnern, aber ich denke, ich habe das behoben, indem ich die Trigramm-Funktionalität (was immer das ist) entfernt habe. Also lösche diese Zeile: ': trigram => {}' hat es für mich behoben. – Gruntled

+0

Ya, tiefer graben Ich fand, dass Sie das Trigramm-Paket installieren müssen, damit es funktioniert. Die Seite pg_search enthält ein wenig Dokumentation. –

Antwort

11

Ich lief dieses Problem schon früher. für jedermann zu klären, nur anderen, die in Schwierigkeiten laufen könnte ... hier ist, wie die Erweiterung installieren:

  1. eine neue Migration Erstellen von

    bundle exec rails g migration add_trigram_extension 
    
  2. In der Migration ausgeführt wird, fügen Sie den folgenden Code:

    def up 
        execute "create extension pg_trgm" 
    end 
    
    def down 
        execute "drop extension pg_trgm" 
    end 
    
  3. Führen Sie die Migration mit bundle exec rake db:migrate

Dies funktionierte für mich vor Ort. Einige der Erweiterungen oder Konfigurationen, die Sie mit pg_search verwenden können, erfordern neuere Versionen von Postgres. Um bestimmte Erweiterungen auf Heroku zu verwenden, müssen Sie möglicherweise eine dev-Datenbank verwenden.

UPDATE: Es ist mein Verständnis, dass Heroku rollende Upgrades veröffentlicht hat und jetzt jeder standardmäßig eine neuere Version von pg ausführt. Das oben genannte sollte auf Heroku funktionieren, ohne dass die Datenbank aktualisiert werden muss.

+2

Ich bin der Autor und Betreuer von pg_search, und was @stephenalexbrowne sagt, ist genau richtig. Mehr Infos gibt es unter https://github.com/Casecommons/pg_search/wiki/Installing-Postgres-Contrib-Modules – nertzy

+0

@nertzy Ich habe das bis zum T verfolgt und es bricht lokal und auf Heroku mit dem 'PG :: Error : FEHLER: Operator existiert nicht: Text% Unbekannter Fehler. Ich bin auf der gemeinsamen DB, die das Trigram-Paket anbietet, und ich habe PG über Homebrew mit dem Trigram-Paket dort installiert. – Simpleton

+0

@Simpleton Normalerweise würden Sie etwas wie 'text% text', nicht' text% unknown' sehen. Vielleicht könnten Sie ein Problem unter https://github.com/Casecommons/pg_search/issues öffnen und Ihre Suchanfrage einfügen? – nertzy