記事のディレクトリ
1つの転置インデックス
1.転置インデックスとは
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-g7SO2mhV-1596981293103)(http://note.youdao.com/yws/ res / 60510 / 2AE09DC7D9A24970A52A45FE10EB8BDF)]
これは主に2つの部分で構成されています。
1.用語辞書
すべてのドキュメントの単語を記録し、単語と転置リストの間の関連関係を記録します。実稼働環境の単語データの量は一般に比較的多く、B +ツリーまたはハッシュジッパー方式で実装して、高性能の挿入またはクエリに対応できます。
2.投稿リスト
単語に対応するドキュメントの転置インデックスアイテム情報がいくつか記録されます。主に含まれています:
- ドキュメントID
- 単語の頻度(関連性のスコアリングに使用される、単語がドキュメントに表示される回数)
- 位置(位置、文の検索に使用されるドキュメントセグメンテーション内の単語の位置)
- オフセット(強調表示を実現するために単語の開始位置と終了位置を記録します)
ES jsonドキュメントの各フィールドには、デフォルトで独自の転置インデックスがあります。もちろん、特定のフィールドにインデックスを付けないように指定することもできます。このアプローチの利点はスペースを節約することですが、欠点も明らかです。インデックスが付けられていないフィールドは検索できません。
第二に、トークナイザー
1、analyzsis与アナライザー
ESでは、全文の変換は、アナライザーを個々の単語に変換する特定のアナライザー(アナライザー)を介して行われます。このプロセス全体は分析(分析)と呼ばれます。
トークナイザーは、単語のセグメンテーションに特化したコンポーネントです。トークナイザーは、主に次の3つの部分で構成されています。
- 主にHTMLの削除など、元のテキストを処理するための文字フィルター。
- Tokenizer、特定のルールに従ってドキュメントをセグメント化する
- トークンフィルター。小文字の処理、ストップワードの削除、類義語の追加など、分割された単語を処理します。
ESのトークナイザーには、ESの組み込みトークナイザーとカスタマイズされたトークナイザーの2つの主要なカテゴリがあります。実稼働環境では、実際の状況とビジネスニーズに基づいて正しいトークナイザーを選択する必要があります。ドキュメントの書き込みと読み取りでは、分析に対応するトークナイザーを使用する必要があります。
2.一般的な組み込みトークナイザー
トークナイザー | 基本的な紹介 |
---|---|
標準アナライザー | デフォルトのトークナイザー、単語セグメンテーション、小文字処理、ストップワードオフ |
シンプルアナライザー | 非文字セグメンテーション(文字はフィルタリングされます)によると、小文字の処理 |
アナライザーの停止 | 単語によるセグメンテーション、単語フィルタリングの停止(is、a、the)、小文字処理 |
ホワイトスペースアナライザー | スペースに応じて分割し、小文字の処理は行わないでください |
キーワードアナライザー | 単語セグメンテーション処理なし、出力としての直接入力 |
パターンアナライザー | 正規表現、デフォルト\ W +(文字区切りなし) |
言語 | 30以上の共通言語トークナイザーを提供する |
カスタマーアナライザー | カスタムトークナイザー |
3.中国語の単語セグメンター
1)ICUアナライザー
対応するプラグインを手動でダウンロードする必要があります。これは、アジア言語をより適切にサポートするためのユニコードを提供します。
Elasticsearch-plugin install analysis-icu
2)私。
カスタムシソーラスをサポートし、ホットアップデートワードセグメンテーション辞書をサポートします
3)THULAC
清華大学の自然言語処理および社会人文科学コンピューティング研究所によって提供される中国語の単語セグメンテーションのセット
4、_analyze API
トークナイザーの単語セグメンテーション効果を確認するための3種類のテスト
1)_analyzeを直接使用する
GET /_analyze
{
"analyzer":"standard",
"text":"This is a Test"
}
2)インデックスの特定のフィールドを指定して、その単語のセグメンテーション効果を表示します
POST ${index_name}/_analyze
{
"filed":"title",
"text":"Mastering Elasticsearch"
}
3)指定された単語セグメンテーションをカスタマイズして、単語セグメンテーションの効果を表示します
POST /_analyze
{
"tokenizer":"standard",
"filter":["lowercase"],
"text":"Mastering Elasticsearch"
}