Этот плагин предоставляет следующие функции:
Если вы используете MySQL или MariaDB, вам нужен Mroonga 9.03 или позже.
Если вы используете PostgreSQL, вам нужна pgrooga 2.2.0 или более поздней версии.
Mroonga и Pgroonga используют Groonga в качестве полной поисковой системы. Вам нужна Groonga 9.0.3 или более поздней версии.
Смотрите документ Pgroonga
См. Документ Mroonga
Вы можете выбрать один из них для установки chupatext:
Рекомендуется Chupa-Text-Docker. См. Документ Chupa-Text-Docker, чтобы установить Chupa-Text-Docker.
См. Документ Chupa-Text-Vagrant, чтобы установить chupa-text-vagrant.
CHUPA-TEXT-HTTP-Server-это нормальное приложение Ruby on Rails, например, саму Redmine. Вы можете развернуть Chupa-Text-HTTP-сервер как обычное приложение Ruby on 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:migrateПерезагрузить Redmine.
Примечание для пгронги:
Если вы используете обычного пользователя для Redmine. Вы должны запустить следующий запрос в качестве суперпользователя, прежде чем запустить RAILS_ENV=production bin/rails redmine:plugins:migrate :
CREATE EXTENSION IF NOT EXISTS pgroonga; Откройте https: // your_redmine_server/settings/plugin/full_text_search и настраивайте элементы на странице. Если вы установите сервер chupatext, необходимо настроить «URL -адрес сервера chupatext -сервера». Если вы установите свой сервер chupatext от Chupa-Text-Docker или Chupa-Text-Vagrant на том же хосте, это http://127.0.0.1:20080/extraction.json .
Вам необходимо создать индекс для существующих данных. Вам нужно запустить full_text_search:synchronize задачу, пока не будет больше синхронизировать целевые данные.
$ 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
...Этот плагин поддерживает расширение запросов. Вы можете использовать эту функцию для реализации поиска синонимов.
Вы можете администрировать список расширения запросов по веб -интерфейсу на странице администрирования или файла данных.
Вы можете использовать следующий формат для файла данных:
Если вы используете CSV, используйте следующий формат:
SOURCE1,DESTINATION1
SOURCE2,DESTINATION2
...
Пример:
MySQL,MySQL
MySQL,MariaDB
MariaDB,MySQL
MariaDB,MariaDB
Если вы используете JSON, используйте один из следующих форматов:
[
[ " SOURCE1 " , " DESTINATION1 " ],
[ " SOURCE2 " , " DESTINATION2 " ],
...
][
{ "source" : " SOURCE1 " , "destination" : " DESTINATION1 " },
{ "source" : " SOURCE2 " , "destination" : " DESTINATION2 " },
...
]Примеры:
[
[ " MySQL " , " MySQL " ],
[ " MySQL " , " MariaDB " ],
[ " MariaDB " , " MySQL " ],
[ " MariaDB " , " MariaDB " ]
][
{ "source" : " MySQL " , "destination" : " MySQL " },
{ "source" : " MySQL " , "destination" : " MariaDB " },
{ "source" : " MariaDB " , "destination" : " MySQL " },
{ "source" : " MariaDB " , "destination" : " MariaDB " }
]Вы можете синхронизировать список расширения запросов с помощью файла данных по следующей команде:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:query_expansion:synchronize INPUT=query-expansion.csvВы можете подтвердить текущий список расширения запросов на странице администрирования.
Мрунга не в безопасности. Если MySQL разбит во время обновления данных в Mroonga, данные Mroonga могут быть нарушены.
Вот инструкция о восстановлении после разбитых данных Mroonga.
Если вы используете задержку с плагином Redmine, вам необходимо остановить работников и удалить задания для этого плагина:
$ sudo -H systemctl stop [email protected]
$ cd redmine
$ RAILS_ENV=production bin/rails runner ' Delayed::Job.where(queue: "full_text_search").delete_all 'Остановить MySQL:
$ sudo -H systemctl stop mysqldУдалить файлы, связанные с 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* "Запустить MySQL:
$ sudo -H systemctl start mysqldУбедитесь, что Mroonga была должным образом установлена на основе руководства Mroonga. Если Mroonga не установлена, установите Mroonga, как следующее:
$ mysql -u root -p < /usr/share/mroonga/install.sqlУничтожь таблицы явно для этого плагина:
$ 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 ;Воссоздайте схему для этого плагина:
$ 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_searchЕсли вы используете задержку с плагином Redmine, вам нужно запустить работников:
$ sudo -H systemctl start [email protected]Синхронизировать:
$ cd redmine
$ RAILS_ENV=production bin/rails full_text_search:synchronize UPSERT=later Вот несколько полезных инструментов для подготовки:
dev/run-mysql.sh и dev/run-postgresql.sh : запустить новый экземпляр RDBMS от Docker.dev/initialize-redmine.sh : инициализировать Redmine.dev/run-test.sh : запустить тесты для полного плагина поиска текстового поиска.Исходные коды клонов. Это требуется только один раз.
$ 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 Вы можете добавить больше плагинов в plugins/ .
Выберите подходящую конфигурацию базы данных:
$ ln -fs ../plugins/full_text_search/config/database.yml.example. ${REDMINE_VERSION} . ${RDBMS} config/database.ymlВот пример использования Redmine 5.0 и MySQL:
$ ln -fs ../plugins/full_text_search/config/database.yml.example.5.0.mysql config/database.ymlЗапустить RDBMS.
Для mysql:
$ plugins/full_text_search/dev/run-mysql.sh /tmp/mysqlДля PostgreSQL:
$ plugins/full_text_search/dev/run-postgresql.sh /tmp/postgresqlИнициализировать Redmine:
$ plugins/full_text_search/dev/initialize-redmine.shЗапустите тесты:
$ plugins/full_text_search/dev/run-test.sh Вам нужно создать классы Mapper для каждой цели поиска. См. lib/full_text_search/*_mapper.rb для получения подробной информации.
Вам нужно добавить require_dependency "full_text_search/XXX_mapper в init.rb для загрузки этих новых классов Mapper.
Вы можете подтвердить свои изменения обычными способами разработки Redmine.
Например, вот командная строка для запуска Redmine:
$ bin/rails serverВам нужно добавить тесты в следующие файлы:
test/unit/full_text_search/XXX_test.rbtest/functional/full_text_search/search_controller_test.rbВот командная строка для запуска тестов:
$ plugins/full_text_search/dev/run-test.sh Вы можете указать параметры тестирования TESTOPTS :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS= " -n/test_XXX/ " Вы можете увидеть все параметры тестирования TESTOPTS=--help :
$ plugins/full_text_search/dev/run-test.sh TESTOPTS=--help Кенджи Окимото
Sutou Kouhei <[email protected]>
Shimadzu Corporation
Лицензия MIT. Смотрите лицензию для деталей.
asserts/stylesheets/fontawesome*/**/*asserts/stylesheets/fontawesome*/LICENSE.txt для получения подробной информации git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )