일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ApplicationContext란
- Spring Handler
- 자바
- 안드로이드
- Servlet Life Cycle
- ElasticSearch Shingle
- spring 장점
- Java
- layout
- Servlet Container란
- Servlet 멀티 스레딩
- 안드로이드스튜디오
- H2 DB
- Servlet과 Thread
- Bean Factory란
- elasticSearch
- ElasticSearch EdgeNGram
- 인텔리제이
- Spring Container란
- Dispathcher Servlet이란
- ContextLoaderListener란
- 계산기
- 동의어 파일
- ElasticSearch 동의어 사전
- ElasticSearch 토큰필터
- 토큰필터
- Spring Servlet이란
- H2
- ElasticSearch 동의어 파일
- ElasticSearch NGram
- Today
- Total
목록분류 전체보기 (117)
결국 무엇이든 해내는 사람
-- pattern_replace 캐릭터 필터는 정규식을 이용한 치환이다 -- 캐릭터 필터는 토크나이저가 적용되기 이전에 , 필드 내용을 치환하는 전처리 과정이다. -- 아래의 예는 카멜 표기법으로 된 단어를 대문자가 시작되는 부분에 공백을 넣어 -- 단어별로 토큰화 하는 예제 PUT camel { "settings": { "analysis": { "analyzer": { "camel_analyzer": { "char_filter": [ "camel_filter" ], "tokenizer": "standard", "filter": [ "lowercase" ] } }, "char_filter": { "camel_filter": { "type": "pattern_replace", "pattern": "(?
-- Mapping 캐릭터 필터를 이용하면 지정단어를 다른 단어로 치환 가능 -- 특수문자를 포함하는 기능을 구현할려면 반드시 적용해야하므로 실제로 캐릭터 필터 중에선 가장 많이 사용함 POST coding/_bulk {"index":{"_id":"1"}} {"language":"Java"} {"index":{"_id":"2"}} {"language":"C"} {"index":{"_id":"3"}} {"language":"C++"} -- 쿼리 질의시 C와C++ 두 개가 결과로 나온다 -- why?? -- 도큐먼트가 색인될 때 기본적으로 standard 애널라이저가 적용되면서 특수문자 C++에서 ++은 제거 되고 C는 소문자로 처리되면서 -- 실제 역 인덱스는 'c'가 저장되기 때문임 -- 그러므로 검색도..
-- HTML로 된 텍스트 값의 경우 태그들을 제거하여 일반 텍스트로 만들 수 있다. -- 로 된 태그 뿐만 아니라 와 같은 html 문법 용어들도 해석한다 -- 옵션은 html_strip 으로 줄 수 있다. POST _analyze { "tokenizer": "keyword", "char_filter": [ "html_strip" ], "text": "I'm so happy!" } -- I'm so happy! 로 변경되었음 -- [ 주의 ] -- 애널라이저는 최소 1개의 토크나이저를 필요로 하기 때문에 캐릭터 필터만 적용하면 오류가 발생한다. -- 그러므로 위에서는 keyword 토크나이저를 사용
-- _analyze API 로 애널라이저, 토크나이저, 토큰필터들의 테스트가 가능 -- 그러나 , 실제 인덱스에 저장되는 데이터 처리에 대한 설정은 [ 애널라이저 ] 만 가능하다. -- 인덱스 mapping에 애널라이저를 적용할 때 보통 직접 조합한 사용자 정의 애널라이저( Custom Analyzer )를 사용한다. -- 매핑에 따로 설정하지 않는 경우 standard 애널라이저가 적용된다. -- 사용자 정의 애널라이저는 인덱스의 "settings" -> "index" -> "analysis"에 정의한다. -- 정의한 후에는 해당 인덱스에서 [ 인덱스명 ]/_analyze 명령으로 사용가능 -- Ex ) 인덱스 안에 커스텀 에널라이저 추가 -- type 은 custom PUT my_index3 { "..
-- 샘플 PUT my_index2 { "mappings": { "properties": { "message": { "type": "text", "analyzer": "snowball" } } } } PUT my_index2/_doc/1 { "message": "The quick brown fox jumps over the lazy dog" } -- term 쿼리는 match 쿼리와 유사하지만 , term 쿼리는 [ 입력한 검색어는 애널라이저를 적용하지 않고 입력된 검색어 그대로 일치하는 텀을 찾는다 ] -- 따라서 jumps, jumping 과 같이 검색하면 결과가 나타나지 않고 jump로 검색해야 결과가 나타난다. -- 이렇게 도큐먼트의 원문은 jumps 이지만 어떤 쿼리를 사용하느냐에 따라 -- 원..
-- 토크나이저는 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", "lowercas..
-- ES에 저장되는 도큐먼트는 모든 문자열(text) 필드 별로 역 인덱스를 생성한다. -- Term 별로 구분하되, 해당 Term 이 존재하는 다큐먼트들을 정리 -- ES는 text 필드가 저장될 때 데이터에서 검색어 토큰을 저장하기 위해 여러 단계의 처리 과정을 거치는데 이 과정을 텍스트 분석( Text Analysis ) 라고 한다. -- 그리고 이 과정을 처리하는 [ 애널라이저(Analyzer, 분석기)가 있다. -- ES의 [ 애널라이저 ]는 0~3개의 [ 캐릭터 필터( Chracter Filter) ]와 1개의 [ 토크나이저( Tokenizer ) ], 0~n개의 [ 토큰 필터( Token Filter ) ]로 이루어진다. -- 텍스트 데이터가 입력되면 가장 먼저 필요에 따라 전체 문장에서 ..
-- 일반적으로 오라클이나 MySql 같은 관계형 DB에서는 내용을 테이블 구조로 저장을 한다. 2차원 구조 -- 만약에 테이블에서 Text에 'fox'가 포함된 행들을 가져온다고하면 Text열을 한 줄씩 찾아 내려가면서 'fox' 가 있으면 가져오고 -- 없으면 넘어가는 식으로 데이터를 가져옴 -- 전통적인 RDBMS에서는 위와 같이 [ like ] 검색을 사용하므로 데이터가 늘어날수록 검색해야 할 대상이 늘어나 시간도 오래걸리고 -- row 안의 내용을 모두 읽어야 하기 때문에 기본적으로 속도가 느리다. -- ES는 데이터를 저장할 때 다음과 같이 역 인덱스(Inverted Index)라는 구조를 만들어 저장합니다. -- 역 인덱스란, 책의 맨 뒤에 있는 주요 [ 키워드 ]에 대한 내용이 몇 페이지에..