يدمج البرنامج المساعد IK Analysis محلل Lucene IK ويدعم القاموس المخصص. وهو يدعم الإصدارات الرئيسية من Elasticsearch وOpenSearch. تمت صيانته ودعمه بواسطة ❤️ بواسطة INFINI Labs.
يشتمل البرنامج الإضافي على محلل: ik_smart
و ik_max_word
و tokenizer: ik_smart
و ik_max_word
يمكنك تنزيل المكونات الإضافية المجمعة من هنا: https://release.infinilabs.com/
,
أو يمكنك استخدام plugin
cli لتثبيت البرنامج المساعد مثل هذا:
للبحث المرن
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.4.1
للبحث المفتوح
bin/opensearch-plugin install https://get.infini.cloud/opensearch/analysis-ik/2.12.0
نصائح: استبدل رقم الإصدار الخاص بك المتعلق بـ Elasticsearch أو opensearch.
1.إنشاء فهرس
curl -XPUT http://localhost:9200/index
2. إنشاء رسم الخرائط
curl -XPOST http://localhost:9200/index/_mapping -H ' Content-Type:application/json ' -d '
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
} '
3. فهرسة بعض المستندات
curl -XPOST http://localhost:9200/index/_create/1 -H ' Content-Type:application/json ' -d '
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/_create/2 -H ' Content-Type:application/json ' -d '
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/_create/3 -H ' Content-Type:application/json ' -d '
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/_create/4 -H ' Content-Type:application/json ' -d '
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
4.query مع تسليط الضوء
curl -XPOST http://localhost:9200/index/_search -H ' Content-Type:application/json ' -d '
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'
نتيجة
{
"took" : 14 ,
"timed_out" : false ,
"_shards" : {
"total" : 5 ,
"successful" : 5 ,
"failed" : 0
},
"hits" : {
"total" : 2 ,
"max_score" : 2 ,
"hits" : [
{
"_index" : " index " ,
"_type" : " fulltext " ,
"_id" : " 4 " ,
"_score" : 2 ,
"_source" : {
"content" : "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
},
"highlight" : {
"content" : [
" <tag1>中国</tag1>驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首 "
]
}
},
{
"_index" : " index " ,
"_type" : " fulltext " ,
"_id" : " 3 " ,
"_score" : 2 ,
"_source" : {
"content" : "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
},
"highlight" : {
"content" : [
"均每天扣1艘<tag1>中国</tag1>渔船 "
]
}
}
]
}
}
يمكن العثور على ملف التكوين IKAnalyzer.cfg.xml
على {conf}/analysis-ik/config/IKAnalyzer.cfg.xml
أو {plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
< properties >
< entry key = " ext_dict " >custom/mydict.dic;custom/single_word_low_freq.dic</ entry >
< entry key = " ext_stopwords " >custom/ext_stopword.dic</ entry >
< entry key = " remote_ext_dict " >location</ entry >
< entry key = " remote_ext_stopwords " >http://xxx.com/xxx.dic</ entry >
</ properties >
يدعم البرنامج المساعد الحالي قاموس إعادة التحميل السريع لتحليل IK، من خلال التكوين المذكور سابقًا في ملف تكوين IK.
< entry key = " remote_ext_dict " >location</ entry >
< entry key = " remote_ext_stopwords " >location</ entry >
من بينها location
الذي يشير إلى عنوان URL، مثل http://yoursite.com/getCustomDict
. يحتاج هذا الطلب فقط إلى تلبية النقطتين التاليتين لإكمال التحديث الساخن للتجزئة.
يحتاج طلب HTTP إلى إرجاع رأسين، أحدهما هو Last-Modified
والآخر هو ETag
. كلاهما من نوع السلسلة، وإذا تغير أي منهما، فسوف يجلب البرنامج الإضافي تجزئة جديدة لتحديث مكتبة الكلمات.
تنسيق المحتوى الذي يتم إرجاعه بواسطة طلب HTTP هو كلمة واحدة لكل سطر، ويتم تمثيل حرف السطر الجديد بواسطة n
.
يمكن أن يؤدي استيفاء المتطلبين المذكورين أعلاه إلى تحقيق تحديثات الكلمات الساخنة دون الحاجة إلى إعادة تشغيل مثيل ES.
يمكنك وضع الكلمات المهمة التي تحتاج إلى التحديث تلقائيًا في ملف .txt مشفر بترميز UTF-8. ضعه تحت nginx أو خادم HTTP بسيط آخر. عندما يتم تعديل ملف .txt، سيقوم خادم HTTP تلقائيًا بإرجاع آخر تعديل وETag المطابقين عندما يطلب العميل الملف. يمكنك أيضًا إنشاء أداة منفصلة لاستخراج المفردات ذات الصلة من نظام الأعمال وتحديث ملف .txt هذا.
يرجى التأكد من أن تنسيق النص الخاص بقاموسك المخصص مشفر بـ UTF8.
ik_max_word: ينفذ أفضل تجزئة للنص. على سبيل المثال، سيتم تقسيم "中华人民共和国国歌" إلى "" إنشاء مجموعات محتملة متنوعة بشكل شامل، مناسبة للاستعلام عن المصطلحات.
ik_smart: يقوم بإجراء تجزئة النص إلى أجزاء خشنة. على سبيل المثال، سيتم تقسيم "中华人民共和国国歌" إلى "中华人民共和国,国歌"، المناسب لاستعلامات العبارات.
ملحوظة: ik_smart ليس مجموعة فرعية من ik_max_word.
لا تتردد في الانضمام إلى خادم Discord لمناقشة أي شيء حول هذا المشروع:
https://discord.gg/4tKTMkkvVX
حقوق الطبع والنشر ©️ مختبرات INFINI.
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.