Este complemento proporciona las siguientes características:
Si está utilizando MySQL o MariadB, necesita Mroonga 9.03 o posterior.
Si está utilizando PostgreSQL, necesita Pgroonga 2.2.0 o posterior.
Mroonga y Pgroonga usan Groonga como motor de búsqueda de texto completo. Necesitas Groonga 9.0.3 o posterior.
Ver documento de Pgroonga
Ver documento de Mroonga
Puede elegir uno de ellos para instalar Chupatext:
Se recomienda el docker de texto chupa. Consulte el documento CHUPA-Text-Docker para instalar chupa-text-docker.
Consulte el documento CHUPA-TEXT-VAGRANT para instalar Chupa-Text-Vagrant.
Chupa-text-http-server es una aplicación normal de rubí en rieles como RedMine. Puede implementar chupa-text-http-server como una aplicación Ruby en Rails normal.
$ cd redmine
$ git clone https://github.com/clear-code/redmine_full_text_search.git plugins/full_text_search
$ bundle install
$ RAILS_ENV=production bin/rails redmine:plugins:migrateReinicie Redmine.
Nota para Pgroonga:
Si usa el usuario normal para RedMine. Debe ejecutar la siguiente consulta como un súper usuario antes de ejecutar RAILS_ENV=production bin/rails redmine:plugins:migrate :
CREATE EXTENSION IF NOT EXISTS pgroonga; Abra https: // your_redmine_server/settings/plugin/full_text_search y configure elementos en la página. Si instala el servidor Chupatext, debe configurar "URL del servidor Chupatext". Si instala su servidor Chupatext por chupa-text-docker o chupa-text-vagrant en el mismo host, es http://127.0.0.1:20080/extraction.json .
Debe crear un índice para los datos existentes. Debe ejecutar full_text_search:synchronize Task hasta que no hay más datos de destino sincronizar.
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:synchronize
$ RAILS_ENV=production bin/rails full_text_search:synchronize
$ RAILS_ENV=production bin/rails full_text_search:synchronize
...Este complemento admite la expansión de la consulta. Puede usar esta función para implementar la búsqueda de sinónimos.
Puede administrar la lista de expansión de consultas mediante interfaz de usuario web en la página de administración o archivo de datos.
Puede usar el siguiente formato para el archivo de datos:
Si usa CSV, use el siguiente formato:
SOURCE1,DESTINATION1
SOURCE2,DESTINATION2
...
Ejemplo:
MySQL,MySQL
MySQL,MariaDB
MariaDB,MySQL
MariaDB,MariaDB
Si usa JSON, use uno de los siguientes formatos:
[
[ " SOURCE1 " , " DESTINATION1 " ],
[ " SOURCE2 " , " DESTINATION2 " ],
...
][
{ "source" : " SOURCE1 " , "destination" : " DESTINATION1 " },
{ "source" : " SOURCE2 " , "destination" : " DESTINATION2 " },
...
]Ejemplos:
[
[ " MySQL " , " MySQL " ],
[ " MySQL " , " MariaDB " ],
[ " MariaDB " , " MySQL " ],
[ " MariaDB " , " MariaDB " ]
][
{ "source" : " MySQL " , "destination" : " MySQL " },
{ "source" : " MySQL " , "destination" : " MariaDB " },
{ "source" : " MariaDB " , "destination" : " MySQL " },
{ "source" : " MariaDB " , "destination" : " MariaDB " }
]Puede sincronizar la lista de expansión de consultas con el archivo de datos mediante el siguiente comando:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:query_expansion:synchronize INPUT=query-expansion.csvPuede confirmar la lista de expansión de consulta actual en la página de administración.
Mroonga no es seguro. Si MySQL se bloquea al actualizar los datos en Mroonga, los datos de Mroonga pueden estar rotos.
Aquí está la instrucción para recuperarse de los datos de mroonga rotos.
Si está utilizando el trabajo retrasado del complemento RedMine, debe detener a los trabajadores y eliminar trabajos para este complemento:
$ sudo -H systemctl stop [email protected]
$ cd redmine
$ RAILS_ENV=production bin/rails runner ' Delayed::Job.where(queue: "full_text_search").delete_all 'Detener mysql:
$ sudo -H systemctl stop mysqldEliminar archivos relacionados con Mroonga:
$ cd redmine
$ database_name= $( RAILS_ENV=production bin/rails runner ' puts ActiveRecord::Base.configurations[Rails.env]["database"] ' )
$ sudo -H sh -c " rm -rf /var/lib/mysql/ ${database_name} .mrn* "Comienza mysql:
$ sudo -H systemctl start mysqldVerifique que Mroonga se haya instalado correctamente en función del manual de Mroonga. Si Mroonga no está instalado, instale mroonga como lo siguiente:
$ mysql -u root -p < /usr/share/mroonga/install.sqlTablas de destrucción explícitamente para este complemento:
$ mysql -u root -p ${database_name}
> DROP TABLE IF EXISTS fts_query_expansions ;
> DROP TABLE IF EXISTS fts_targets ;
> DROP TABLE IF EXISTS fts_tags ;
> DROP TABLE IF EXISTS fts_tag_types ;
> DROP TABLE IF EXISTS fts_types ;Recrear esquema para este complemento:
$ cd redmine
$ RAILS_ENV=production bin/rails redmine:plugins:migrate NAME=full_text_search VERSION=0
$ RAILS_ENV=production bin/rails redmine:plugins:migrate NAME=full_text_searchSi está utilizando el trabajo retrasado del complemento RedMine, debe iniciar trabajadores:
$ sudo -H systemctl start [email protected]Sincronizar:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:synchronize UPSERT=later Aquí hay algunas herramientas útiles para preparar:
dev/run-mysql.sh y dev/run-postgresql.sh : ejecute nueva instancia de RDBMS por Docker.dev/initialize-redmine.sh : Inicializar Redmine.dev/run-test.sh : ejecute pruebas para el complemento de búsqueda de texto completo.Códigos de origen de clonos. Esto se requiere solo una vez.
$ git clone https://github.com/redmine/redmine.git
$ cd redmine
$ git checkout 5.0-stable # or something
$ git clone [email protected]: ${YOUR_FORK} /redmine_full_text_search.git plugins/full_text_search Puede agregar más complementos a plugins/ .
Elija la configuración de la base de datos adecuada:
$ ln -fs ../plugins/full_text_search/config/database.yml.example. ${REDMINE_VERSION} . ${RDBMS} config/database.ymlAquí hay un ejemplo para usar RedMine 5.0 y MySQL:
$ ln -fs ../plugins/full_text_search/config/database.yml.example.5.0.mysql config/database.ymlEjecute RDBMS.
Para mysql:
$ plugins/full_text_search/dev/run-mysql.sh /tmp/mysqlPara PostgreSQL:
$ plugins/full_text_search/dev/run-postgresql.sh /tmp/postgresqlInicializar Redmine:
$ plugins/full_text_search/dev/initialize-redmine.shEjecutar pruebas:
$ plugins/full_text_search/dev/run-test.sh Debe crear clases de mapper para cada objetivo de búsqueda. Consulte lib/full_text_search/*_mapper.rb para más detalles.
Debe agregar require_dependency "full_text_search/XXX_mapper a init.rb para cargar estas nuevas clases de mapper.
Puede confirmar sus cambios por las formas habituales de desarrollo de RedMine.
Por ejemplo, aquí hay una línea de comando para ejecutar RedMine:
$ bin/rails serverDebe agregar pruebas a los siguientes archivos:
test/unit/full_text_search/XXX_test.rbtest/functional/full_text_search/search_controller_test.rbAquí hay una línea de comando para ejecutar pruebas:
$ plugins/full_text_search/dev/run-test.sh Puede especificar las opciones de prueba por TESTOPTS :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS= " -n/test_XXX/ " Puede ver todas las opciones de prueba por TESTOPTS=--help :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS=--help Kenji Okimoto
Sutou Kouhei <[email protected]>
Shimadzu Corporation
La licencia del MIT. Vea la licencia para más detalles.
asserts/stylesheets/fontawesome*/**/*asserts/stylesheets/fontawesome*/LICENSE.txt para más detalles git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )