該插件提供以下功能:
如果您使用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 )