2011-05-18 14 views
8

Estamos usando manchas solares para buscar en nuestro último proyecto. También usamos concebir y son la indexación de nuestro modelo de usuario de la siguiente manera:Índice de manchas solares solo cuando los campos de búsqueda cambian

searchable do 
    text :fname 
    text :lname 
    text :email 
    text :description 
    text :twitter_username 
end 

Con esta configuración, un usuario no puede ni siquiera entrar a menos Solr está en marcha. Esto implica que en cada guardado del modelo de Usuario, hay alguna comunicación con nuestro servidor Solr (reindexando?), Incluso si ninguno de los campos de búsqueda ha cambiado. ¿Es esto correcto?

También tenemos muchos otros modelos que están siendo indexados por manchas solares que tienen campos que no se pueden buscar y que se actualizan con frecuencia. Parece como si la mancha solar los reindexara en todas estas actualizaciones.

¿Hay forma de configurar manchas solares para que solo interactúen con solr cuando cambia un campo de búsqueda?

+0

Si desea asegurarse de iniciar sesión cuando Sunspot no funciona, consulte https://github.com/bdurand/sunspot_index_queue – lulalala

Respuesta

12

Supongo que tiene la última versión de gema de mancha solar.

  1. Sunspot se reindexa cada vez que cambia el modelo. Para modificar este comportamiento (ver options for searchable):

    búsquedas: ignore_attribute_changes_of => [: AVERAGE_RATING,: enlace permanente] hacer texto: título final

    Tome una mirada en el código fuente: https://github.com/outoftime/sunspot/blob/master/sunspot_rails/lib/sunspot/rails/searchable.rb

  2. su sitio debería funcionar hasta que la primera solicitud de Solr:

    • ya sea una solicitud de búsqueda de texto completo

    • ya sea una solicitud de indexación

    Usted probablemente está haciendo una actualización sobre el modelo de usuario cada vez que un usuario inicia una sesión, por lo tanto, provocando una reindex.

Más consejos:

  • , de hecho, no es la indexación que lleva mucho tiempo, es el mandato de confirmación; el comando commit se emite, por defecto, al final de cada solicitud web; Esto es muy costoso en un entorno de producción. Te aconsejo que change the policy a autocommit after X seconds;

  • si quieres que tu quieres parchear las manchas solares para que el sitio debe trabajar en caso de fallo del servidor Solr, yo le aconsejo que echar un vistazo a esta joya, que se burla de interfaz de servidor para el env prueba: sunspot_matchers

+1

Recurrirá a los atributos ignorados de. Es molesto tener que especificar esto cuando declaramos explícitamente campos de búsqueda. ¿Prevé alguna complicación si tuviera que crear un parche que agregue lógica adicional a searchable.rb para consultar la configuración de manchas solares y determinar si los campos modificados afectarán el índice? – ghempton

Cuestiones relacionadas