ElasticSearchの調査ノート3

目次

ESの基礎となるインデックスの原則 

IKトークナイザー

IKで拡張ワードとストップワードをカスタマイズする


ESの基礎となるインデックスの原則 

IKトークナイザー

1.定義:テキスト内のキーワードを分割することです

私はシャオミンのクラスメートです

単語セグメンテーションの原則:キーワードを分割してストップワードとストップワードを削除する

2. ESで提供単語分割

    1.デフォルトの標準アナライザー標準アナライザー英語:単語のセグメンテーション中国語:1文字の単語のセグメンテーション

    2.シンプルでシンプルなアナライザー英語:単語のセグメンテーション  は数字を削除します   中国語:単語のセグメンテーションなし

3.さまざまなトークナイザーをテストします


GET /_analyzer
{
	"analyzer":"simple",
	"text":"redis 非常好用 111"
}
  • 標準セグメンテーションの結果は次のとおりです。redisは非常に使いやすい111
  • 単純な単語セグメンテーションの結果は次のとおりです。redisは非常に使いやすいです

4.ESトークナイザーに基づくgithubIKトークナイザー

注:IKトークナイザーとESバージョンの使用は厳密に一貫している必要があります

5. ik_max_wordとik_smartの違いは何ですか?

  • ik_max_word:テキストは、「私はシャオミンのクラスメートです」を「私はシャオミンのクラスメートです」、「私は」、「私はシャオミンです」、「シャオミンのクラスメート」に分割するなど、最も細かい粒度分割されます。 、「クラスメート」は、考えられるすべての組み合わせを使い果たします。私はシャオミンのクラスメートです。
  • ik_smart:「私はシャオミンのクラスメートです」を「私はシャオミンのクラスメートです」に分割するなど、最も粗い分割を行います
PUT /emp
{
	"mappings":{
		"emp":{
			"properties":{
				"name":{
					"type":"text",
					"analyzer":"ik_max_word"
				},
				"age":{
					"type":"integer"
				},
				"bir":{
					"type":"date"
				},
				"content":{
					"type":"text",
					"analyzer":"ik_max_word"
				},
				"address":{
					"type":"keyword"
				}
			}
		}
	}
}

IKで拡張ワードとストップワードをカスタマイズする

1.拡張ワード

定義:既存のikトークナイザーは、この単語をキーワードにセグメント化できませんが、特定の単語がキーワードになることを期待しています

        ikトークナイザーなどは、いくつかの人気のあるオンライン単語などのキーワードに分割できます 

        IK構成ファイルの構成:ESインストールディレクトリの下の/ plugins / ik / configディレクトリ内の名前:IKAnalyzer.cfg.xml

       構成ファイルを変更して、次の構成を追加します。

                <!-ユーザーはここで独自の拡張辞書を構成できます>

                <entry key = "ext_dict"> ext.dic </ entry>

2.ストップワード

定義:既存のikトークナイザーはキーワードを1つの単語に分割しますが、何らかの理由でこの単語をキーワードとして表示できません

<entry key = "ext_stopwords"> stopext.dic </ entry>

3.リモート拡張辞書を構成します

 

EN中クエリ

1.クエリ文字列!クエリDSLクエリ

    キーワードクエリ----->スコアの計算、並べ替えなどのシリーズ

2. FilterQueyフィルターのクエリ効率は比較的高い

     条件を満たすデータを除外する-------->ドキュメントのスコアは計算、並べ替え、一般的に使用されない一般的に使用されるフィッターの結果を自動的に除外する

     2つのクエリを組み合わせるには、bool式を使用する必要があります

     注:filterQueryとqueryを組み合わせて使用​​する場合、fitterQueryのステートメントが最初に実行され、次にqueryのステートメントが実行されます。

フィルタリングは広範囲のデータのフィルタリングに適しており、クエリデータを正確照合するのに適しています一般的なアプリケーションでは、最初にフィルターデータ使用してから、クエリマッチングデータ使用する必要があります

おすすめ

転載: blog.csdn.net/weixin_37841366/article/details/109412252