IK 分析プラグインは Lucene IK アナライザーを統合し、カスタマイズされた辞書をサポートします。 Elasticsearch と OpenSearch のメジャー バージョンをサポートします。 INFINI Labs による ❤️ による保守とサポート。
プラグインは、アナライザー: ik_smart
、 ik_max_word
、およびトークナイザー: 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.強調表示付きのクエリ
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
http://yoursite.com/getCustomDict
などの URL を指します。このリクエストは、セグメンテーションのホット アップデートを完了するために、次の 2 つの点を満たすだけで済みます。
HTTP リクエストは 2 つのヘッダーを返す必要があります。1 つはLast-Modified
、もう 1 つはETag
です。これらは両方とも文字列型であり、どちらかが変更されると、プラグインは新しいセグメンテーションを取得して単語ライブラリを更新します。
HTTP リクエストによって返されるコンテンツ形式は 1 行に 1 単語であり、改行文字はn
で表されます。
上記 2 つの要件を満たすと、ES インスタンスを再起動せずにホットワード更新を実行できます。
自動的に更新する必要があるホット ワードを、UTF-8 でエンコードされた .txt ファイルに配置できます。これを nginx または別の単純な HTTP サーバーの下に配置します。 .txt ファイルが変更されると、クライアントがファイルを要求したときに、HTTP サーバーは対応する Last-Modified および ETag を自動的に返します。ビジネス システムから関連する語彙を抽出し、この .txt ファイルを更新するための別のツールを作成することもできます。
ユーザー辞書のテキスト形式が UTF8 エンコードされていることを確認してください。
ik_max_word: テキストの最も細かいセグメンテーションを実行します。たとえば、「中华人民共和国国歌」を「中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国,国歌」に分割し、さまざまな可能性を網羅的に生成します。用語クエリに適した組み合わせ。
ik_smart: テキストの最も粗いセグメンテーションを実行します。たとえば、「中华人民共和国国歌」を「中华人民共和国,国歌」に分割し、フレーズ クエリに適しています。
注: ik_smart は、ik_max_word のサブセットではありません。
このプロジェクトに関して何でも話し合うために、お気軽に Discord サーバーに参加してください:
https://discord.gg/4tKTMkkvVX
Copyright ©️ INFINI Labs.
Apache License バージョン 2.0 (「ライセンス」) に基づいてライセンスされています。ライセンスに準拠する場合を除き、このファイルを使用することはできません。ライセンスのコピーは次の場所で入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合または書面による同意がない限り、ライセンスに基づいて配布されるソフトウェアは、明示または黙示を問わず、いかなる種類の保証や条件もなく、「現状のまま」で配布されます。ライセンスに基づく許可と制限を規定する特定の言語については、ライセンスを参照してください。