Si encuentra útil este complemento, considere una donación para mostrar su soporte.
www.paypal.com/cgi-bin/webscr?cmd=_send-money
Dirección de PayPal: [email protected]
Este complemento permite que se agregue la búsqueda de Text Full-Text de Boolean a cualquier aplicación Rails sin dependencias y una configuración mínima.
gem 'actS_as_indexed'
Ejecute bundle install . Hecho.
./script/plugin install git: //github.com/dougal/acts_as_indexed.git
Si no tiene instalado Git, pero aún desea el complemento, puede descargar el complemento de la página Github (github.com/dougal/acts_as_indexed) y desempaquetarlo en el directorio vendor/plugins de su aplicación Rails.
Al actualizar a una nueva versión de ACTS_AS_Indexed se recomienda eliminar el directorio de índice y permitir que se reconstruya.
Agregue acts_as_indexed a la parte superior de los modelos que desee indexar, junto con una lista de los campos que desea indexar.
clase post <activerecord :: base ACTS_AS_Indexed: Fields => [: Título ,: Body] ... fin
Los campos no se limitan a los campos modelo, pero pueden ser cualquier método de instancia del modelo actual.
Usuario de clase <activerecord :: base
ACTS_AS_Indexed: Fields => [: Dirección ,: FullName]
Def Fullname
self.firstname + '' ' + self.lastname
fin
...
finCualquiera de las opciones de configuración en la sección de configuración adicional se puede agregar en cuanto a la llamada de método ACTS_AS_Indexed. Estos anularán cualquier valor predeterminado o configuración global.
Puede especificar PROC que debe evaluar como verdadero antes de que el elemento se indexe. Esto es útil si solo desea que se incluyan elementos con un determinado estado. El Proc se pasa por la instancia del objeto actual para que pueda probar contra eso.
Por ejemplo, si tiene una columna visible que es falsa si la publicación está oculta, o verdadera si es visible, puede filtrar el índice haciendo:
clase post <activerecord :: base
ACTS_AS_INDEXED: Fields => [: Título ,: Body] ,: if => Proc.New {| Post | post. Visible? }
...
fin Para buscar con las coincidencias más relevantes que aparecen primero, llame al método find_with_index en su modelo, pasando una consulta como primer argumento. El parámetro ids_only opcional, cuando se establece en True, devolverá solo las ID de cualquier registro coincidente.
# Devuelve la matriz de objetos de publicación ordenados por relevancia. my_search_results = post . find_with_index ( 'mi consulta de búsqueda' ) # Pase cualquiera de los Activerecord Encuentre opciones para la búsqueda. my_search_results = post . find_with_index ( 'mi consulta de búsqueda' , { : limit => 10 }) # Devuelve las primeras 10 coincidencias. # Devuelve la matriz de ID ordenadas por relevancia. my_search_results = post . find_with_index ( 'mi consulta de búsqueda' , {}, { : ids_only => true }) # => [12,19,33 ...
Si la relevancia de los resultados no es importante, llame al with_query llamado con el alcance de su modelo, pasando una consulta como argumento.
# Devuelve la matriz de objetos de publicación. my_search_results = post . with_query ( 'mi consulta de búsqueda' ) # Encadena con cualquier número de métodos Activerecord y nombres_scopes. my_search_results = post . público . with_query ( 'mi consulta de búsqueda' ). Find ( : all , : límite => 10 ) # Devuelve las primeras 10 coincidencias que son públicas.
Los siguientes operadores de consultas son compatibles:
Esta es la opción predeterminada. 'Cat Dog' encontrará registros que coinciden con 'gato' y 'perro'.
'Cat -Dog' encontrará registros que coinciden con 'gato' y no 'perro'
'Cat +Me' encontrará registros que coinciden con 'gato' y 'yo', incluso si 'yo' es más pequeño que el min_word_size
Los términos citados coinciden como frases. "" Cat Dog "" encontrará registros que coinciden con toda la frase. Los términos citados pueden ser precedidos por el operador no; 'CAT -"Big Dog"', etc. Los términos citados pueden incluir palabras más cortas que el min_word_size .
Los términos que comienzan con ^ coincidirán con registros que contienen una palabra que comienza con el término. '^Cat' encontrará partidos que contienen 'gato', 'catapulta', 'Caterpillar' etc.
Un término citado que comienza con ^ coincide con cualquier frase que comience con esta frase. '^"Cat D"' encontrará registros que coinciden con las frases completas "Cat Dog" y "Cat Cinner". Este tipo de búsqueda es útil para entradas en autocompletar.
La paginación se admite a través del método paginate_search cuyo primer argumento es la consulta de búsqueda, seguida de todos los argumentos estándar de Will_Paginate.
@Images = Imagen . Paginate_Search ( 'Girl' , : Page => 1 , : Per_page => 5 )
Dado que with_query es un alcance llamado, Willpaginate se puede usar de manera normal.
@Images = Imagen . with_query ( 'niña' ). Paginate ( : Page => 1 , : Per_page => 5 )
Se puede proporcionar un bloque de configuración en sus archivos de entorno o inicializadores. Ejemplo que muestra cambiar el tamaño de la palabra mína:
ActSasindexed . configurar do | configuración | configuración . min_word_size = 3 # Más configuración según sea necesario ... fin
Se puede encontrar un resumen completo de las opciones de configuración disponibles en lib/acts_as_indexed/configuration.rb
Actúa como indexado apoya a Heroku fuera de la caja. El índice se crea en el directorio TMP, que es la única parte escritable del sistema de archivos Heroku Dyno. Lea la documentación de Heroku (devCenter.heroku.com/articles/read-only-filesystem) con respecto a su sistema de archivos.
Vea la documentación RDOC en línea.
Todos los anteriores son más bienvenidos. [email protected]
Muchas gracias a todos los contribuyentes a esta biblioteca. Sin ellos, muchas correcciones de errores y características no habrían sucedido.
Douglas F Shearer - Douglasfshearer.com
Thomas Pomfret
Philip Arndt
Fernanda Lopes
Alex Coles
Myles Eftos
Edward Anderson
Florent Guilleux
Ben Anderson
Theron Toomey
Uģis ozols
Gabriel Namiman
Samoilov romano
David Turner
Pascal Hurni
Ryan Kopf
Por el momento, ACTS_AS_Indexed solo funciona con caracteres Unicode cuando se usa de la siguiente manera:
https://gist.github.com/193903bb4e0d6e5debe1
He reescrito el proceso de tokenización para permitir un manejo más fácil de esto en el futuro.