일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인텔리제이
- ElasticSearch NGram
- Servlet과 Thread
- layout
- H2
- ElasticSearch Shingle
- 동의어 파일
- ElasticSearch 동의어 파일
- 계산기
- Servlet Container란
- ElasticSearch 동의어 사전
- 자바
- Dispathcher Servlet이란
- ElasticSearch 토큰필터
- Spring Servlet이란
- ElasticSearch EdgeNGram
- H2 DB
- Servlet Life Cycle
- spring 장점
- 안드로이드스튜디오
- ContextLoaderListener란
- Spring Handler
- Java
- Servlet 멀티 스레딩
- 토큰필터
- 안드로이드
- ApplicationContext란
- Spring Container란
- elasticSearch
- Bean Factory란
- Today
- Total
목록분류 전체보기 (117)
결국 무엇이든 해내는 사람
-- 용어집 검색과 같이 사용 사례에 따라 텀이 아닌 단어의 일부만 가지고도 검색을 해야하는 경우가 필요 -- like 검색처럼 wildcard 쿼리나 정규식 쿼리도 있지만 이런 쿼리들은 메모리 소모가 많고 느리다 -- 이런 사용을 위해 텀의 일부만 미리 분리해서 저장을 할 수 있는데 -- 이렇게 단어의 일부를 나눈 부위를 NGram 이라고 한다. -- 설정은 "type" : "nGram"으로 한다. -- "house"라는 단어를 2글자의 NGram으로 처리하면 "ho","ou","us","se" 총 4개의 토큰들이 추출된다. -- ngram 토큰필터를 사용하면 이렇게 2글자씩 추출된 텀들이 모두 검색 토큰으로 저장된다. -- 그렇게 되면 , "ho"라고만 검색을 해도 house가 포함된 도큐먼트들이 검..

-- 검색 서비스에 따라서 동의어 검색이 필요할 수 있다 -- Synonym 토큰 필터를 사용하면 텀의 동의어 저장이 가능 -- 불용어 사전과 마찬가지로 직접 목록을 입력하거나, 파일로 관리가 가능 -- "A, B => C" : 왼쪽의 A, B 대신 오른쪽의 C 텀을 저장. A, B 로는 C의 검색이 가능하지만 C로는 A, B가 검색되지 않는다. -- "A, B" : A,B 각각의 텀이 A와 B 두 개의 텀을 모두 저장한다. A와 B 모두 서로의 검색어로 검색이 된다. -- "amazon" => "aws"로 동의어를 지정하는 예제 -- amazon 을 검색할 경우 aws의 검색결과도 같이 보여준다. PUT my_synonym { "settings": { "analysis": { "analyzer": { ..

-- 기사나 포스팅 글에서는 의미없는 조사나 전치사 등이 많음 -- 영문에서도 마찬가지 the , a , an ,,, -- 이러한 단어들은 대부분 검색어로 쓰이지 않는데, 이런 단어를 한국어로는 [ 불용어 ]라고 한다 -- 불용어는 영어로 stopword 라고 한다. -- [ Stop ] 토큰 필터를 적용하면 불용어에 해당하는 텀들을 제거한다. -- "_english_" , "_german_" 같이 언어를 지정해서 해당 언어팩에 있는 불용어를 지정할 수도 있다. -- 한,중,일어 등은 별도의 형태소 분석기를 사용해야한다. -- 불용어 목록을 별도의 텍스트 파일로 저장하고 저장된 파일경로를 stopwords_path 항목의 값으로 지정하여 사용하는 것도 가능하다. -- 불용어 in,the,days로 지정 ..
-- 영어나 유럽어 기반의 텍스트들은 대소문자가 있다 -- 검색할 때에는 대소문자에 상관없이 가능하도록 처리 해 주어야 한다 -- 그래서 lowercase 토큰 필터는 거의 모든 텍스트 검색 사례에서 사용되는 토큰 필터이다. GET _analyze { "filter": [ "lowercase" ], "text": [ "Harry Potter and the Philosopher's Stone" ] } -- 소문자로 변경 { "tokens" : [ { "token" : "harry potter and the philosopher's stone", "start_offset" : 0, "end_offset" : 40, "type" : "word", "position" : 0 } ] } GET _analyze {..
-- 디렉토리나 파일 경로등을 다루는데 사용하는 토크나이저 -- Pattern 토크나이저는 디렉토리명들이 하나씩 토큰으로 분리된 것을 확인 -- Path Hierarchy 토크나이저는 계층별로 저장해서 수준별로 검색하거나 집계하는 것이 가능 POST _analyze { "tokenizer": "path_hierarchy", "text": "/usr/share/elasticsearch/bin" } -- 상위 디렉토리부터 차근차근 쌓여서 토큰화 된다. { "tokens" : [ { "token" : "/usr", "start_offset" : 0, "end_offset" : 4, "type" : "word", "position" : 0 }, { "token" : "/usr/share", "start_offs..
-- standard 토크나이저는 @ , / 등과 같은 특수문자는 제거하고 분리한다 -- 하지만 URL 등이 삽입된 데이터에서 이런 특수문자가 사라지면 안된다 -- 이를 방지하기 위해 사용 가능한 것이 UAX URL Email 토크나이저 이다 -- standard 토크나이저로 분리한 경우 GET _analyze { "tokenizer": "standard", "text": "email address is my-name@email.com and website is https://www.elastic.co" } -- 이메일이 분리 되버림 { "tokens" : [ { "token" : "email", "start_offset" : 0, "end_offset" : 5, "type" : "", "position..
-- standard 토크나이저 GET _analyze { "tokenizer": "standard", "text": "THE quick.brown_FOx jumped! @ 3.5 meters." } -- 결과 -- 공백으로 텀을 구분하면서 "@"와 같은 특수문자 제거 -- 단어 끝에 있는 느낌표나 "."는 제거 되지만, 중간에 있는 마침표나 밑줄 등은 제거되거나 분리되지 않는다. { "tokens" : [ { "token" : "THE", "start_offset" : 0, "end_offset" : 3, "type" : "", "position" : 0 }, { "token" : "quick.brown_FOx", "start_offset" : 4, "end_offset" : 19, "type" : "..
-- 샘플 bulk POST my_index/_bulk {"index":{"_id":1}} {"message":"The quick brown fox"} {"index":{"_id":2}} {"message":"The quick brown fox jumps over the lazy dog"} {"index":{"_id":3}} {"message":"The quick brown fox jumps over the quick dog"} {"index":{"_id":4}} {"message":"Brown fox brown dog"} {"index":{"_id":5}} {"message":"Lazy jumping dog"} -- 쿼리 없이 사용시 자동으로 match_all 적용 GET my_index/_search..