Ce plugin fournit les fonctionnalités suivantes:
Si vous utilisez MySQL ou MARIADB, vous avez besoin de Mroonga 9.03 ou plus tard.
Si vous utilisez PostgreSQL, vous avez besoin de pgroonga 2.2.0 ou ultérieure.
Mroonga et Pgroonga utilisent Groonga comme moteur de recherche de texte intégral. Vous avez besoin de Groonga 9.0.3 ou version ultérieure.
Voir le document Pgroonga
Voir le document Mroonga
Vous pouvez choisir l'un d'eux pour installer Chupatext:
Chupa-text-docker est recommandé. Voir le document chupa-text-docker pour installer chupa-text-docker.
Voir le document chupa-text-vagrant pour installer chupa-text-vagrant.
Chupa-text-http-server est une application Ruby on Rails normale comme Redmin lui-même. Vous pouvez déployer Chupa-Text-Http-Server comme une application Ruby sur Rails normale.
$ 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:migrateRedémarrez Redmin.
Note pour pgroonga:
Si vous utilisez un utilisateur normal pour Redmin. Vous devez exécuter la requête suivante en tant que super utilisateur avant d'exécuter RAILS_ENV=production bin/rails redmine:plugins:migrate :
CREATE EXTENSION IF NOT EXISTS pgroonga; Ouvrez https: // your_redmine_server / paramètres / plugin / full_text_search et configurer les éléments de la page. Si vous installez le serveur Chupatext, vous devez configurer "Chupatext Server URL". Si vous installez votre serveur Chupatext par chupa-text-docker ou chupa-text-vagrant sur le même hôte, c'est http://127.0.0.1:20080/extraction.json .
Vous devez créer un index pour les données existantes. Vous devez exécuter full_text_search:synchronize la tâche jusqu'à ne plus synchroniser les données cibles.
$ 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
...Ce plugin prend en charge l'expansion de la requête. Vous pouvez utiliser cette fonctionnalité pour implémenter la recherche de synonymes.
Vous pouvez administrer la liste d'extension des requêtes par interface utilisateur Web dans la page d'administration ou le fichier de données.
Vous pouvez utiliser le format suivant pour le fichier de données:
Si vous utilisez CSV, utilisez le format suivant:
SOURCE1,DESTINATION1
SOURCE2,DESTINATION2
...
Exemple:
MySQL,MySQL
MySQL,MariaDB
MariaDB,MySQL
MariaDB,MariaDB
Si vous utilisez JSON, utilisez l'un des formats suivants:
[
[ " SOURCE1 " , " DESTINATION1 " ],
[ " SOURCE2 " , " DESTINATION2 " ],
...
][
{ "source" : " SOURCE1 " , "destination" : " DESTINATION1 " },
{ "source" : " SOURCE2 " , "destination" : " DESTINATION2 " },
...
]Exemples:
[
[ " MySQL " , " MySQL " ],
[ " MySQL " , " MariaDB " ],
[ " MariaDB " , " MySQL " ],
[ " MariaDB " , " MariaDB " ]
][
{ "source" : " MySQL " , "destination" : " MySQL " },
{ "source" : " MySQL " , "destination" : " MariaDB " },
{ "source" : " MariaDB " , "destination" : " MySQL " },
{ "source" : " MariaDB " , "destination" : " MariaDB " }
]Vous pouvez synchroniser la liste d'extension des requêtes avec le fichier de données par la commande suivante:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:query_expansion:synchronize INPUT=query-expansion.csvVous pouvez confirmer la liste actuelle de l'extension des requêtes dans la page d'administration.
Mroonga n'est pas en sécurité. Si MySQL est écrasé lors de la mise à jour des données dans Mroonga, les données Mroonga peuvent être rompues.
Voici l'instruction pour se remettre des données de Mroonga cassées.
Si vous utilisez un travail retardé du plugin Redmine, vous devez arrêter les travailleurs et supprimer des travaux pour ce plugin:
$ sudo -H systemctl stop [email protected]
$ cd redmine
$ RAILS_ENV=production bin/rails runner ' Delayed::Job.where(queue: "full_text_search").delete_all 'Arrêtez MySQL:
$ sudo -H systemctl stop mysqldSupprimer les fichiers liés à 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* "Démarrez MySQL:
$ sudo -H systemctl start mysqldVérifiez que Mroonga a été correctement installé en fonction du manuel Mroonga. Si Mroonga n'est pas installé, installez Mroonga comme ce qui suit:
$ mysql -u root -p < /usr/share/mroonga/install.sqlDestruct Tables explicitement pour ce 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 ;Recréez un schéma pour ce 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_searchSi vous utilisez un travail retardé sur le plugin Redmine, vous devez démarrer les travailleurs:
$ sudo -H systemctl start [email protected]Synchroniser:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:synchronize UPSERT=later Voici quelques outils utiles pour préparer:
dev/run-mysql.sh et dev/run-postgresql.sh : Exécutez la nouvelle instance RDBMS par docker.dev/initialize-redmine.sh : initialiser Redmin.dev/run-test.sh : Exécutez des tests pour le plugin de recherche de texte complet.Codes source de clone. Ceci n'est requis qu'une seule fois.
$ 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 Vous pouvez ajouter plus de plugins aux plugins/ .
Choisissez la configuration de la base de données appropriée:
$ ln -fs ../plugins/full_text_search/config/database.yml.example. ${REDMINE_VERSION} . ${RDBMS} config/database.ymlVoici un exemple pour utiliser Redmine 5.0 et MySQL:
$ ln -fs ../plugins/full_text_search/config/database.yml.example.5.0.mysql config/database.ymlExécutez le RDBM.
Pour mysql:
$ plugins/full_text_search/dev/run-mysql.sh /tmp/mysqlPour PostgreSQL:
$ plugins/full_text_search/dev/run-postgresql.sh /tmp/postgresqlInitialiser Redmin:
$ plugins/full_text_search/dev/initialize-redmine.shExécutez des tests:
$ plugins/full_text_search/dev/run-test.sh Vous devez créer des classes de mapper pour chaque cible de recherche. Voir lib/full_text_search/*_mapper.rb pour plus de détails.
Vous devez ajouter require_dependency "full_text_search/XXX_mapper à init.rb pour charger ces nouvelles classes de mappeur.
Vous pouvez confirmer vos modifications par des voies de développement de Redmin habituelles.
Par exemple, voici une ligne de commande pour exécuter Redmin:
$ bin/rails serverVous devez ajouter des tests aux fichiers suivants:
test/unit/full_text_search/XXX_test.rbtest/functional/full_text_search/search_controller_test.rbVoici une ligne de commande pour exécuter les tests:
$ plugins/full_text_search/dev/run-test.sh Vous pouvez spécifier des options de test par TESTOPTS :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS= " -n/test_XXX/ " Vous pouvez voir toutes les options de test par TESTOPTS=--help :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS=--help Kenji Okimoto
Sutou kouhei <[email protected]>
Shimadzu Corporation
La licence MIT. Voir la licence pour plus de détails.
asserts/stylesheets/fontawesome*/**/*asserts/stylesheets/fontawesome*/LICENSE.txt pour plus de détails git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )