English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
검색 작업 중에 쿼리를 처리할 때, 분석 모듈은 모든 인덱스 내용을 분석합니다. 이 모듈은 분석기, 토큰 생성기, 토큰 필터 및 문자 필터로 구성됩니다. 분석기가 정의되지 않았을 경우, 기본 분석기, 토큰, 필터 및 토큰 생성기가 분석 모듈에 등록됩니다.
다음 예제에서는 기본 분석기를 사용하여 토큰을 생성합니다. 기본 분석기는 다른 분석기를 지정하지 않았을 때 사용됩니다. 그러나 문장에 따라 문법을 분석하여 문장에서 사용된 단어를 생성합니다.
POST _analyze { "analyzer": "standard", "text": "오늘의 날씨는 좋습니다" {}
위의 코드를 실행하면 다음과 같은 응답을 받습니다:
{ "tokens": [ { "token" : "today's", "start_offset": 0, "end_offset": : 7, "type": "", "position": 0 }, { "token": "weather", "start_offset": : 8, "end_offset": : 15, "type": "", "position": : 1 }, { "token" : "is", "start_offset": : 16, "end_offset": : 18, "type": "", "position": : 2 }, { "token": "beautiful", "start_offset": : 19, "end_offset": : 28, "type": "", "position": : 3 {} ] {}
우리의 커스터마이즈된 요구사항을 얻기 위해 standard 분석기를 다양한 파라미터로 구성할 수 있습니다.
다음 예제에서는 standard 분석기를 설정하여 max_token_length를5。
이를 위해 먼저 max_length_token 파라미터를 가진 분석기를 사용하여 인덱스를 생성합니다.
PUT index_4_analysis { "settings": { "analysis": { "analyzer": { "my_english_analyzer": { "type": "standard", "max_token_length": 5, "stopwords": "_english_" {} {} {} {} {}
다음과 같은 텍스트를 사용하여 분석기를 적용해 보겠습니다. 주의할 점은 토큰이 어떻게 표시되지 않는지에 있습니다.因为它在开头有两个空格,在结尾有两个空格。对于“ is”이라는 단어는 시작 부분에 공백이 있고, 끝 부분에 공백이 있습니다. 이들을 모두 제거하면4공백이 있는 문자열이 단어가 되는 것은 아닙니다. 최소한 시작 부분이나 끝 부분에 공백이 아닌 문자가 하나는 있어야 합니다. 그렇지 않으면 계산할 단어로 인정됩니다.
POST index_4_analysis/_analyze { "analyzer": "my_english_analyzer", "text": "오늘의 날씨는 좋습니다" {}
위의 코드를 실행하면 다음과 같은 응답을 받습니다:
{ "tokens": [ { "token": "today" "start_offset": 0, "end_offset": : 5, "type": "", "position": 0 }, { "token": "s", "start_offset": : 6, "end_offset": : 7, "type": "", "position": : 1 }, { "token": "weath", "start_offset": : 8, "end_offset": : 13, "type": "", "position": : 2 }, { "token": "er", "start_offset": : 13, "end_offset": : 15, "type": "", "position": : 3 }, { "token": "beaut", "start_offset": : 19, "end_offset": : 24, "type": "", "position": : 5 }, { "token": "iful", "start_offset": : 24, "end_offset": : 28, "type": "", "position": : 6 {} ] {}
아래 표는 다양한 분석기 목록 및 설명을 나타냅니다-
순번 | 분석기 및 설명 |
---|---|
1 | 표준 분석기(standard) stopwords와 max_token_length 설정을 통해 이 분석기에 설정할 수 있습니다. 기본적으로 stopwords 목록은 비어 있으며 max_token_length은255。 |
2 | 간단 분석기(simple) 이 분석기는 소문자 토큰화기로 구성됩니다. |
3 | 공백 분석기 (whitespace) 이 분석기는 공백 토큰화기로 구성됩니다 |
4 | 정지 분석기 (stop) stopwords와 stopwords_path를 설정할 수 있습니다. 기본적으로 stopwords는 영어 정적 단어로 초기화되며 stopwords_path는 중지 단어가 포함된 텍스트 파일의 경로를 포함합니다 |
토큰 생성기는 Elasticsearch의 텍스트에서 토큰을 생성하는 데 사용됩니다. 공백이나 기타 구분기호를 고려하여 텍스트를 토큰으로 분해할 수 있습니다. Elasticsearch는 사용자 정의 분석기를 사용할 수 있는 많은 내장 토큰화기가 있습니다.
아래는 토큰화기의 예제입니다. 이 토큰화기는 비문자 문자를 만날 때 텍스트를 여러 단어로 분해하지만 모든 단어를 소문자로 변환합니다. 예를 들어-
POST _analyze { "tokenizer": "lowercase", "text": "It Was a Beautiful Weather 5 Days ago." {}
위의 코드를 실행하면 다음과 같은 응답을 받습니다:
{ "tokens": [ { "token": "it", "start_offset": 0, "end_offset": : 2, "type": "word", "position": 0 }, { "token": "was", "start_offset": : 3, "end_offset": : 6, "type": "word", "position": : 1 }, { "token": "a", "start_offset": : 7, "end_offset": : 8, "type": "word", "position": : 2 }, { "token": "beautiful", "start_offset": : 9, "end_offset": : 18, "type": "word", "position": : 3 }, { "token": "weather", "start_offset": : 19, "end_offset": : 26, "type": "word", "position": : 4 }, { "token": "days", "start_offset": : 29, "end_offset": : 33, "type": "word", "position": : 5 }, { "token": "ago", "start_offset": : 34, "end_offset": : 37, "type": "word", "position": : 6 {} ] {}
토큰 생성기의 목록 및 설명은 다음 표에 나와 있습니다.
순번 | 토큰화기와 설명 |
---|---|
1 | 표준 표시기 (standard) 이는 문법 기반의 표시기로 구성되어 있으며, max_token_length이 이 표시기에 설정될 수 있습니다. |
2 | 에지 NGram 표시기(edgeNGram) min_gram, max_gram, token_chars와 같은 설정이 이 표시기에 설정될 수 있습니다. |
3 | 키워드 표시기 (keyword) 이는 입력의 전체를 출력으로 생성합니다. buffer_size는 이를 위해 설정할 수 있습니다. |
4 | 문자 표시기(letter) 이는 문자열의 전체를, 알파벳이 아닌 문자에 도달할 때까지 잡습니다. |