2012-05-15 6 views
6

Tenía pg_search trabajando en mi aplicación Rails 3.2.3 usando multisearch. Luego implementé el inicializador proporcionado por nertzy (autor de pg_search) en this post.. Ahora en que funciono una búsqueda me sale el siguiente error:Error con pg_search multisearch después de inicializar tsearch, trigram

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. 

Mi vista se representa con este código:

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

El resto de mi configuración se puede encontrar here. Cualquier ayuda es muy apreciada.

+0

¿Encontró una respuesta a esto? Me estoy encontrando con el mismo problema. –

+0

Hola John. Estoy tratando de recordarlo, pero creo que lo solucioné al eliminar la funcionalidad trigram (lo que sea que sea). Así que borrando esta línea: ': trigram => {}' lo arregló por mí. – Gruntled

+0

Ya, profundizando más Encontré que tienes que instalar el paquete trigram para que funcione. La página pg_search contiene un poco de documentación. –

Respuesta

11

También encontré este problema antes. Solo para aclarar para cualquier otra persona que pueda estar en ejecución en problemas ... aquí está cómo instalar la extensión:

  1. Crear una nueva migración mediante la ejecución de

    bundle exec rails g migration add_trigram_extension 
    
  2. En su migración, pegue el siguiente código:

    def up 
        execute "create extension pg_trgm" 
    end 
    
    def down 
        execute "drop extension pg_trgm" 
    end 
    
  3. ejecutar la migración con bundle exec rake db:migrate

Esto funcionó para mí a nivel local. Algunas de las extensiones o configuraciones que puede usar con pg_search requieren versiones más nuevas de Postgres. Para usar ciertas extensiones en heroku, puede necesitar usar una base de datos de desarrollo.

ACTUALIZACIÓN: Tengo entendido que heroku ha publicado actualizaciones sucesivas y ahora todos están ejecutando una versión más nueva de pg de forma predeterminada. Lo anterior debería funcionar en heroku sin la necesidad de actualizar su base de datos.

+2

Soy el autor y mantenedor de pg_search, y lo que dice @stephenalexbrowne es exactamente correcto. Más información está disponible en https://github.com/Casecommons/pg_search/wiki/Installing-Postgres-Contrib-Modules – nertzy

+0

@nertzy He seguido esto a la T y se rompe localmente y en Heroku con el 'PG :: Error : ERROR: el operador no existe: error de texto% desconocido'. Estoy en el DB compartido que ofrece el paquete trigram y tengo PG instalado a través de homebrew con el paquete trigram allí. – Simpleton

+0

@Simpleton Por lo general, verás algo así como 'text% text', no' text% unknown'. ¿Tal vez podría abrir un problema en https://github.com/Casecommons/pg_search/issues y pegar en su consulta? – nertzy

Cuestiones relacionadas