Este plugin fornece os seguintes recursos:
Se você estiver usando o MySQL ou o MariaDB, precisará de Mroonga 9.03 ou posterior.
Se você estiver usando o PostgreSQL, precisará de PGroonga 2.2.0 ou posterior.
Mroonga e Pgroonga usam o Groonga como mecanismo de pesquisa de texto completo. Você precisa de Groonga 9.0.3 ou posterior.
Veja o documento PGroonga
Veja Mroonga Document
Você pode escolher um deles para instalar o Chupatext:
CHUPA-TEXT-DOCKER é recomendado. Consulte o documento Chupa-Text-Docker para instalar o Docker Chupa-Text.
Consulte o documento Chupa-Text-Vagrant para instalar o chupa-text-vagrant.
O Chupa-Text-Http-Server é um aplicativo normal de rubi nos trilhos, como o próprio Redmine. Você pode implantar o Chupa-Text-Http-Server como um aplicativo normal de rubi no Rails.
$ 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 o Redmine.
Nota para pgroonga:
Se você usar o usuário normal para redmine. Você deve executar a seguinte consulta como super usuário antes de executar RAILS_ENV=production bin/rails redmine:plugins:migrate :
CREATE EXTENSION IF NOT EXISTS pgroonga; Abra https: // your_redmine_server/Configurações/plugin/Full_text_search e configure itens na página. Se você instalar o servidor chupatext, configure "URL do servidor chupatext". Se você instalar seu servidor chupatext por chupa-text-docker ou chupa-text-vagrant no mesmo host, é http://127.0.0.1:20080/extraction.json .
Você precisa criar índice para dados existentes. Você precisa executar full_text_search:synchronize a tarefa até que não seja mais sincronizar dados de destino.
$ 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 plug -in suporta expansão de consulta. Você pode usar esse recurso para implementar a pesquisa de sinônimos.
Você pode administrar a lista de expansão da consulta por interface da web na página de administração ou arquivo de dados.
Você pode usar o seguinte formato para arquivo de dados:
Se você usar o CSV, use o seguinte formato:
SOURCE1,DESTINATION1
SOURCE2,DESTINATION2
...
Exemplo:
MySQL,MySQL
MySQL,MariaDB
MariaDB,MySQL
MariaDB,MariaDB
Se você usar o JSON, use um dos seguintes formatos:
[
[ " SOURCE1 " , " DESTINATION1 " ],
[ " SOURCE2 " , " DESTINATION2 " ],
...
][
{ "source" : " SOURCE1 " , "destination" : " DESTINATION1 " },
{ "source" : " SOURCE2 " , "destination" : " DESTINATION2 " },
...
]Exemplos:
[
[ " MySQL " , " MySQL " ],
[ " MySQL " , " MariaDB " ],
[ " MariaDB " , " MySQL " ],
[ " MariaDB " , " MariaDB " ]
][
{ "source" : " MySQL " , "destination" : " MySQL " },
{ "source" : " MySQL " , "destination" : " MariaDB " },
{ "source" : " MariaDB " , "destination" : " MySQL " },
{ "source" : " MariaDB " , "destination" : " MariaDB " }
]Você pode sincronizar a lista de expansão da consulta com o arquivo de dados pelo seguinte comando:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:query_expansion:synchronize INPUT=query-expansion.csvVocê pode confirmar a lista atual de expansão da consulta na página de administração.
Mroonga não é seguro. Se o MySQL for travado durante a atualização de dados no mroonga, os dados da mroonga poderão ser quebrados.
Aqui está a instrução para se recuperar de dados mroonga quebrados.
Se você estiver usando o Redmine Plugin tardar Job, precisará parar os trabalhadores e excluir empregos para este plug -in:
$ sudo -H systemctl stop [email protected]
$ cd redmine
$ RAILS_ENV=production bin/rails runner ' Delayed::Job.where(queue: "full_text_search").delete_all 'Pare mysql:
$ sudo -H systemctl stop mysqldRemova os arquivos relacionados a 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* "Comece MySql:
$ sudo -H systemctl start mysqldVerifique se Mroonga foi instalado corretamente com base no manual Mroonga. Se mroonga não estiver instalado, instale mroonga como o seguinte:
$ mysql -u root -p < /usr/share/mroonga/install.sqlDestructe as mesas explicitamente para este plugin:
$ 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 ;Recrie esquema para este plugin:
$ 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_searchSe você estiver usando o Redmine Plugin tardar Job, precisará iniciar os trabalhadores:
$ sudo -H systemctl start [email protected]Sincronizar:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:synchronize UPSERT=later Aqui estão algumas ferramentas úteis para se preparar:
dev/run-mysql.sh e dev/run-postgresql.sh : execute uma nova instância RDBMS por Docker.dev/initialize-redmine.sh : Inicialize Redmine.dev/run-test.sh : Execute testes para o plug-in completo de pesquisa de texto.Códigos de origem do clone. Isso é necessário apenas uma 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 Você pode adicionar mais plugins aos plugins/ .
Escolha Configuração adequada do banco de dados:
$ ln -fs ../plugins/full_text_search/config/database.yml.example. ${REDMINE_VERSION} . ${RDBMS} config/database.ymlAqui está um exemplo para usar o Redmine 5.0 e o MySQL:
$ ln -fs ../plugins/full_text_search/config/database.yml.example.5.0.mysql config/database.ymlExecute rdbms.
Para MySQL:
$ plugins/full_text_search/dev/run-mysql.sh /tmp/mysqlPara PostgreSQL:
$ plugins/full_text_search/dev/run-postgresql.sh /tmp/postgresqlInicialize Redmine:
$ plugins/full_text_search/dev/initialize-redmine.shExecutar testes:
$ plugins/full_text_search/dev/run-test.sh Você precisa criar classes de mapeador para cada destino de pesquisa. Consulte lib/full_text_search/*_mapper.rb para obter detalhes.
Você precisa adicionar require_dependency "full_text_search/XXX_mapper ao init.rb para carregar essas novas classes de mapas.
Você pode confirmar suas alterações de maneiras usuais de desenvolvimento Redmine.
Por exemplo, aqui está uma linha de comando para executar o Redmine:
$ bin/rails serverVocê precisa adicionar testes aos seguintes arquivos:
test/unit/full_text_search/XXX_test.rbtest/functional/full_text_search/search_controller_test.rbAqui está uma linha de comando para executar testes:
$ plugins/full_text_search/dev/run-test.sh Você pode especificar as opções de teste por TESTOPTS :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS= " -n/test_XXX/ " Você pode ver todas as opções de teste por TESTOPTS=--help :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS=--help Kenji Okimoto
Sutou kouhei <[email protected]>
Shimadzu Corporation
A licença do MIT. Consulte a licença para obter detalhes.
asserts/stylesheets/fontawesome*/**/*asserts/stylesheets/fontawesome*/LICENSE.txt para obter detalhes git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )