ElasticSearch:中国語の分詞器に英語のサポートを追加(中国語の分詞器が中国語と英語の混合ドキュメントを処理できるようにする)(回転)

1883 ワード

本文の住所は、転載する必要があります.出典を明記してください.
http://blog.csdn.net/hereiskxm/article/details/47441911 私たちが中国語の分詞器を使うとき、実は英語の分詞をサポートすることを望んでいます.文字を格納するフィールドのいずれも、中国語と英語が混在している可能性があります.私たちのプロジェクトではIKAnalyzerを中国語分詞器として使用しています.ドキュメントの処理中に英語に遭遇した場合、スペースと句読点を利用して英語の単語を取り出し、同時に小文字に変換します.実はこれは本当の英語の分詞に近いので、壁の隔てしかありません:語幹抽出.本当の英語分詞器は、単語の分割抽出と全小文字処理のほか、単語を語根に遡る.例えば、I like cats!その正確な分詞は,[i,like,cat]語根化が英語の分詞器に必要な機能である.IKAnalyzerはこの点が欠けています.例文の処理結果は[i,like,cats]です.これは明らかに私たちが望んでいるものではありません.私たちは「cat」と「cats」でこの文を検索することを望んでいます.「cats」で検索しなければならないわけではありません.
analyzerの内部ロジックを分析します:Analyzerの内部は1本の流水線Step 1文字フィルタ(Character filter)Step 2分詞(Tokenization)Step 3 Tokenフィルタ(Token filtering)ElasticSearchです:中国語分詞器のために英語に対するサポートを追加します(中国語分詞器が中国語混合ドキュメントを処理できるようにします)Elasticsearchでは8つのAnalyzerがデフォルトで構築されています.私たちのニーズを満たすことができなければ、「Settings API」でAnalyzerを構築することができます.analyzerを構築することで,IK中国語分詞器をいくつか修正し,語根を遡及させることができる.
{
  "settings": {
    "analysis": {
      "analyzer": {
        "optimizeIK": {
          "type": "custom",
          "tokenizer": "ik",
          "filter": [
            "stemmer"
          ]
        }
      }
    }
  }
}

分詞器としてik,フィルタとしてstemmerを用いたアナライザを新設した.stemmerはelasticsearchが持参した語幹抽出アルゴリズムで、snowballのように多くの言語をサポートしており、比較に興味がある.ikがドキュメントの分詞を完了した後、その中の英語の単語を抽出語幹処理します.テスト:
  -POST   {index_name}/_analyze?pretty&analyzer=optimizeIK

「I like cats」は結果を返します:{「tokens」:[{「token」:「i」、「start_offset」:1、「end_offset」:1、「end_offset」:2、「type」:「ENGLISH」、「position」:1},{「token」:「like」、「start_offset」:3、「end_offset」:7、「type」:「ENGLISH」、「position」:2},{「token」:「cat」、「start_offset」:8、「end_offset」:8、「endend」_offset: 12, “type”: “ENGLISH”, “position”: 3 } ] }
これによりoptimizeIKアナライザは中国語+外国語分詞の機能を同時に持つようになった.このアナライザをindexのデフォルトアナライザに設定したい場合は、defaultと名付けてください.