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 |
Tags
- Servlet Container란
- 동의어 파일
- H2
- Spring Handler
- 인텔리제이
- ElasticSearch EdgeNGram
- ElasticSearch NGram
- 안드로이드스튜디오
- elasticSearch
- 안드로이드
- Spring Servlet이란
- H2 DB
- layout
- ElasticSearch Shingle
- 자바
- ElasticSearch 토큰필터
- Servlet Life Cycle
- Dispathcher Servlet이란
- ElasticSearch 동의어 파일
- Java
- Servlet과 Thread
- ElasticSearch 동의어 사전
- ContextLoaderListener란
- Bean Factory란
- 계산기
- Spring Container란
- ApplicationContext란
- Servlet 멀티 스레딩
- 토큰필터
- spring 장점
Archives
- Today
- Total
결국 무엇이든 해내는 사람
ElasticSearch - Relevancy ( 정확도 ) [ 예제, 설명 ] 본문
반응형
-- 샘플 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"}
-- RDBMS 에서는 결과만 가져올 뿐 얼마나 정확한지에 대한 판단은 불가
-- ES 와 같은 풀텍스트 검색엔진은 결과가 검색 조건과 얼마나 정확하게 일치하는지를 계산하는 알고리즘을 가지고있어서
-- 사용자가 가장 원하는 결과를 먼저 보여 줄 수 있음
-- 이를 Relevancy라고한다. ( 연관성, 관련성으로 번역 되지만 해당 게시글에서는 정확도라고 표현 )
-- 검색을 할때 찾고자 하는 정확한 결과만 보여주고, 상관없는 결과는 보여주지 않는 것이 좋음
-- 실제 검색엔진에서는 어떤것이 사용자가 입력한 검색어와 가장 연관성이 있는지를 계산하여 정확도가 가장 높은 결과들 부터 보여준다.
-- score 점수
-- es의 검색 결과에는 스코어점수가 표시된다.
-- 이 점수는 검색된 결과가 얼마나 검색 조건과 일치하는지를 나타내며 점수가 높은 순으로 결과를 보여준다.
-- match 쿼리를 실행했을때, _score항목에 스코어 점수가 표시되고 이 점수가 높은 결과부터 나타난다.
-- max_score 는 이 전체 결과중에 가장 높은 점수를 표시
-- es는 이 점수를 계산하기 위해 BM25라는 알고리즘 사용
-- BM은 Best Matching 을 뜻함
GET my_index/_search
{
"query": {
"match": {
"message": "quick dog"
}
}
}
-- TF ( Term Frequency )
-- 특정단어가 5번 들어있는 페이지보다는 10번 들어있는 페이지가 내가 원하는 페이지일 확률이 높을 것
-- 도큐먼트 내에서 검색된 텀이 더 많을 수록 점수가 높아지는 것을 Term Frequency라고함
-- 포함하고 있는 Term 이 증가할 수록 TF값도 증가, BM25알고리즘에서는 최대 25까지 증가하고 25부터는 TF의 점수 변화가 없음
-- IDF ( Inverse Document Frequency )
-- A와 B라는 단어를 검색했을 때 , 검색 결과 중에 A가 포함된 결과는 10개 - B가 포함된 결과는 100개 라면 , A가 B보다 검색에
-- 더 중요한 텀일 가능성이 높다. 검색한 텀을 포함하고 있는 도큐먼트 개수가 많을 수록 , 해당 텀 자신의 점수가 감소하는 것을
-- Document Frequency 라고 한다.
-- 전체 인덱스에 포함된 텀이 증가 할수록 IDF는 감소한다. 그래서 Inverse
-- Field Length
-- 도큐먼트에서 필드의 길이가 큰 필드보다는 짧은 필드에 있는 텀의 비중이 클 것이다.
-- 검색하려는 단어가 [ 제목 필드]와 [ 내용 필드]에 모두 있는 경우, 텍스트 길이가 긴 [ 내용 필드 ] 보다는
-- 텍스트 길이가 짧은 [ 제목 필드 ]에 검색어를 포함하고 있는 블로그 포스트가 더 점수가 높게 나타난다
GET my_index/_search
{
"query": {
"match": {
"message": "lazy"
}
}
}
반응형
'두서없는 공부 노트 > ElasticSearch' 카테고리의 다른 글
ElasticSearch - range 쿼리 [ 예제, 설명 ] (0) | 2021.12.13 |
---|---|
ElasticSearch - keyword 타입 [ 예제, 설명 ] (0) | 2021.12.13 |
ElasticSearch - Exact Value Query ( 정확값 쿼리), filter [ 예제, 설명 ] (0) | 2021.12.13 |
ElasticSearch - should와 score [ 예제, 설명 ] (0) | 2021.12.13 |
ElasticSearch - bool 쿼리 [ 예제, 설명 ] (0) | 2021.12.13 |
Comments