该插件提供以下功能:
如果您使用MySQL或Mariadb,则需要Mroonga 9.03或更高版本。
如果您使用的是PostgreSQL,则需要Pgroonga 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是Redmine本身等导轨应用上的普通红宝石。您可以将CHUPA-TEXT-HTTP服务器部署为Rails应用程序中的普通Ruby。
$ 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重新启动红敏。
注意pgroonga:
如果您使用普通用户进行红敏。在运行RAILS_ENV=production bin/rails redmine:plugins:migrate :
CREATE EXTENSION IF NOT EXISTS pgroonga;打开https:// your_redmine_server/settings/plugin/full_text_search并在页面中配置项目。如果安装Chupatext服务器,则必须配置“ Chupatext Server URL”。如果您通过chupa-text-docker或chupa-text-vagrant在同一主机上安装chupatext Server,则是http://127.0.0.1:20080/extraction.json 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
...该插件支持查询扩展。您可以使用此功能来实现同义词搜索。
您可以在管理页面或数据文件中通过Web UI管理查询扩展列表。
您可以将以下格式用于数据文件:
如果使用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您可以在管理页面中确认当前查询扩展列表。
Mroonga并不安全。如果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 :由Docker运行新的RDBMS实例。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您需要为每个搜索目标创建映射类。有关详细信息,请参见lib/full_text_search/*_mapper.rb 。
您需要添加require_dependency "full_text_search/XXX_mapper到init.rb加载这些新的映射器类。
您可以通过通常的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 Kenji Okimoto
sutou kouhei <[email protected]>
Shimadzu Corporation
麻省理工学院许可证。有关详细信息,请参见许可证。
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 )