يوفر هذا البرنامج المساعد الميزات التالية:
إذا كنت تستخدم 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 لتثبيت Vagrant Chupa-Text-Vagrant.
Chupa-Text-HTTP-Server هو تطبيق روبي طبيعي على Rails مثل Redmine نفسه. يمكنك نشر Chupa-Text-HTTP-Server كتطبيق 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.
ملاحظة لـ pgroonga:
إذا كنت تستخدم المستخدم العادي لـ 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 url Server 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يمكنك تأكيد قائمة توسيع الاستعلام الحالية في صفحة الإدارة.
Mroonga ليس بالأمان. إذا تم تحطيم MySQL أثناء تحديث البيانات في Mroonga ، فقد يتم كسر بيانات Mroonga.
فيما يلي تعليمات لاسترداد من بيانات Mroonga المكسورة.
إذا كنت تستخدم وظيفة Redmine Plugin تأخرت ، فأنت بحاجة إلى إيقاف العمال وحذف الوظائف لهذا البرنامج المساعد:
$ 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 Plugin تأخرت ، فأنت بحاجة إلى بدء العمال:
$ 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 لتحميل هذه الفئات الجديدة.
يمكنك تأكيد تغييراتك بطرق تطوير 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
ترخيص معهد ماساتشوستس للتكنولوجيا. انظر الترخيص للحصول على التفاصيل.
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