Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 안드로이드
- ElasticSearch 동의어 사전
- ElasticSearch NGram
- 동의어 파일
- H2 DB
- ElasticSearch Shingle
- Servlet 멀티 스레딩
- 토큰필터
- Dispathcher Servlet이란
- Bean Factory란
- ElasticSearch 동의어 파일
- ElasticSearch 토큰필터
- ContextLoaderListener란
- spring 장점
- Java
- 인텔리제이
- Servlet Life Cycle
- ApplicationContext란
- ElasticSearch EdgeNGram
- Spring Servlet이란
- Spring Container란
- 안드로이드스튜디오
- Spring Handler
- H2
- Servlet과 Thread
- elasticSearch
- Servlet Container란
- layout
- 계산기
- 자바
Archives
- Today
- Total
결국 무엇이든 해내는 사람
ElasticSearch - _analyze API란 [ 예제, 설명 ] 본문
반응형
-- 토크나이저는 tokenizer, 토큰 필터는 filter 항목에 값으로 입력하면 된다.
-- 토크나이저는 하나만 적용되기 떄문에 바로 입력하고, 토큰필터는 여러개를 적용할 수 있기 때문에 []안에 배열 형식으로 입력한다.
GET _analyze
{
"text": "The quick brown fox jumps over the lazy dog",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"stop",
"snowball"
]
}
GET _analyze
{
"text": "The quick brown fox jumps over the lazy dog",
"tokenizer": "whitespace",
"filter": [
"stop",
"lowercase",
"snowball"
]
}
-- 위 두가지를 비교해보면 , 필터의 순서가 다른데 lowercase 보다 stop필터를 먼저 사용하게되면 'the'가 정상적으로 지워지지 않는다.
-- 그 이유는 'The' 는 stop 필터에 해당되지 않기 때문. 그 다음 lowercase가 적용되어서 'The'가 'the'로 바뀐다.
-- 그러므로 [ 여러 개의 토큰 필터를 입력 할 때는 순서가 중요하다 ]
-- _analyze API 에서 analyzer 항목으로 적용해서 사용도 가능.
-- 캐릭터 필터, 토크나이저, 토큰 필터를 조합해서 사용자 정의 애널라이저를 만들 수도 있고, ES에 사전에 정의되어 있어서 바로 사용 가능한 애널라이저도 있다.
-- 예를 들면 whitespace 토크나이저, lowercase-stop-snowball 토큰필터들을 조합한 것이 [ snowball 애널라이저 ] 이다. 바로 사용가능
-- 사용자 정의 애널라이저의 방법으로 시도한 위의 코드와 동일한 성능
GET _analyze
{
"text": "The quick brown fox jumps over the lazy dog",
"analyzer": "snowball"
}
-- 인덱스에 애널라이즈 설정 예시
-- 인덱스의 message 필드에 snowball 애널라이저 적용
PUT my_index2
{
"mappings": {
"properties": {
"message": {
"type": "text",
"analyzer": "snowball"
}
}
}
}
-- jumps를 포함하는 도큐먼트 색인
PUT my_index2/_doc/1
{
"message": "The quick brown fox jumps over the lazy dog"
}
-- match 쿼리로 [ jump, jumps, jumping ]을 검색해도 결과가 동일하다.
-- 입력된 검색어는 [ jumping ] 이지만 [ snowball ] 애널라이저를 거쳐 실제로는 [ jump ]로 검색한다.
-- 역 인덱스에는 [ jumps ] 가 [ jump ]로 저장되어있다.
GET my_index2/_search
{
"query": {
"match": {
"message": "jumping"
}
}
}
반응형
'두서없는 공부 노트 > ElasticSearch' 카테고리의 다른 글
ElasticSearch - Custom Analyzer 만들기 ( 커스텀 애널라이저 ) [ 예제, 설명 ] (0) | 2021.12.14 |
---|---|
ElasticSearch - Term Query란 [ 예제, 설명 ] (0) | 2021.12.14 |
ElasticSearch - 텍스트 분석( Text Analysis )이란 [ 설명 ] (0) | 2021.12.14 |
ElasticSearch - 역 인덱스 ( Inverted Index)란 [ 설명 ] (0) | 2021.12.14 |
ElasticSearch - range 쿼리 [ 예제, 설명 ] (0) | 2021.12.13 |
Comments