SlideShare a Scribd company logo
1 of 23
Download to read offline
Elasticsearch Server
chapter5. 검색 결과 향상
개요
• 아파치 루씬의 점수 계산
• elasticsearch가 제공하는 스크립트 기능
• 다양한 언어를 사용한 자료 색인과 검색
• 반환되는 다큐먼트의 점수에 영향을 미치는 다양한 질의 사용
• 색인 과정에서 중요도 사용
• 의미가 동일한 단어
• 특정 다큐먼트가 반환된 이유 점검
• 점수 계산과 관련한 세부사항 점검
1. Apache Lucene scoring
• 점수는 질의에 대한 다큐먼트의 관련성의 수치
• 기본 아파치 루씬의 점수 계산 알고리즘은 TD/IDF

(Term Frequency - Inverse Document Frequency)

• 다큐먼트가 동일 하더라도 

질의를 할 때마다 계산 점수가 다르다
Score properties
• 다큐먼트 중요도(Document boost)
색인과정에서 다큐먼트에 주어진 중요도
• 필드 중요도(Field boost)
질의와 색인 과정에서 필드에 주어진 중요도
• 조정지수(Coord)
다큐먼트가 포함한 키워드 수에 기반한 값
• IDF(Inverse Document Frequency)
해당 키워드가 얼마나 드문지를 나타내는 값
• 길이기준(Length norm)
필드가 포함한 키워드 수에 기반. 필드가 길수록 작아진다.
• Term frequency
해당 키워드가 도큐먼트에 출현하는 빈도
기본 점수 계산 공식
score(q,d)=coord(q,d)∗queryNorm(q)∗∑(tf (tind)∗idf (t)2 ∗boost(t)∗norm(t,d)) 

• 일치되는 키워드가 드물수록 다큐먼트 점수가 높아질 것이다.
• 다큐먼트 필드가 작을수록 다큐먼트 점수가 높아질 것이다.
• 필드에 대한 중요도가 높을수록 다큐먼트 점수가 높아질 것이다.
• ref : https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/similarities/
TFIDFSimilarity.html
2. Scripting 기능
• elasticsearch는 스크립트작성을 위해 여러 언어를 지원
• 기본적으로 MVEL사용
• javascript, python, groovy지원
3. 다양한 언어로 내용 검색
• 다국어 언어 자료에 대한 다양한 분석기를 선택 가능
• 언어에 종류에 상관없는 어간 추출 분석 제공
여러 언어를 처리하기
• 여러 언어를 처리하는 방법
언어별로 나눠 다른 타입에 다큐먼트를 저장
언어별로 분리된 색인에 다큐먼트를 저장
단일 다큐먼트의 여러 필드에 언여벌로 저장
여러 언어를 감지하기
• 언어 감지 라이브러리
• 아파치 티카(Apache Tika)
• 랭귀지 디텍션(Language detection)
• 텍스트가 길어질수록 언어 감지가 정확해진다.
중요도로 점수에 영향을 미치기
• 질의 중요도
• 질의 시 query와 field에 중요도 설정
• 색인 시점의 중요도
• 색인 시점에 중요도 설정
• 질의와 독립적인 중요도 값을 가짐
중요도를 질의에 추가
{

"query" : {
"prefix" : {
"title" : {
"value" : "cri",
"boost" : 3.0
}
}
}
}
Demo - boost query
중요도를 질의에 추가
{
"query": {
"constant_score": {
"query": {
"query_string": {
"query": "available:false author:heller"
}
}
}
}
}
Demo - constant_score
중요도를 색인시점에 추가
{
"title" : "The Complete Sherlock Holmes",
"author" : "Arthur Conan Doyle",
"year": 1936
}
중요도를 색인시점에 추가
{
"title" : "The Complete Sherlock Holmes",
"author" : {
"_value" : "Arthur Conan Doyle",
"_boost" : 10.0,
},
"year": 1936
}
6. 의미가 동일한 단어
• 하나의 단어를 검색, 의미가 동일하거나 유사한 단어 매칭
• 예를들어 crime검색 시 ‘Crime and Punishment’

뿐만이 아니라, criminality나 abuse단어도

동의어로 설정해 검색시 적용
• 동의어가 바뀔 때마다 자료 재색인 필요
synonym필터
• analyzer에 synonym필터 적용
• 매핑에 synonym프로퍼티 추가
허용되는 동의어 형식
• 명시적인 동의어
• criminality, wars => crime
• abuse => punishment
• 동의어 확장
• one, two, three => one, two, three
7. 질의 해설 기능 이해
Analyze API(Testing Analyzers)
elasticsearch이 어떻게 tokenize하고
index에 어떻게 저장되는지 이해하기가 힘들다.
그래서 elasticsearch는 analyze API를 제공(디버깅용도)
참고 : https://www.elastic.co/guide/en/elasticsearch/guide/current/analysis-intro.html?q=_analy
Demo - analyze API
7. 질의 해설 기능 이해
Explain API
쿼리나 특정 도큐먼트가 어떻게 점수가 계산되어지는지
알아보는 기능 제공
참고 : https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html?q=_explain
Demo - explain API

More Related Content

What's hot

mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 

What's hot (20)

차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guide201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guide
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 
Feature perf comp_v1
Feature perf comp_v1Feature perf comp_v1
Feature perf comp_v1
 
SPARK SQL
SPARK SQLSPARK SQL
SPARK SQL
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
 
Learning spark ch1-2
Learning spark ch1-2Learning spark ch1-2
Learning spark ch1-2
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
Elasticsearch development case
Elasticsearch development caseElasticsearch development case
Elasticsearch development case
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 

Viewers also liked

Lifecycleofhostdeployedwithforemanandautomated
LifecycleofhostdeployedwithforemanandautomatedLifecycleofhostdeployedwithforemanandautomated
Lifecycleofhostdeployedwithforemanandautomated
Kanwar Batra
 
Doriana Capenti Tecate
Doriana Capenti TecateDoriana Capenti Tecate
Doriana Capenti Tecate
Alfonso Caputo
 
디자인매니지먼트2
디자인매니지먼트2디자인매니지먼트2
디자인매니지먼트2
sabina0907
 
Simple Finance Presentation
Simple Finance PresentationSimple Finance Presentation
Simple Finance Presentation
jk571983
 

Viewers also liked (17)

Apresentação uniderp
Apresentação uniderpApresentação uniderp
Apresentação uniderp
 
Valentine Promo
Valentine PromoValentine Promo
Valentine Promo
 
Next Level Software Integration: Bridging the Gap Between Gmail and Salesforc...
Next Level Software Integration: Bridging the Gap Between Gmail and Salesforc...Next Level Software Integration: Bridging the Gap Between Gmail and Salesforc...
Next Level Software Integration: Bridging the Gap Between Gmail and Salesforc...
 
function2
function2function2
function2
 
Festival City Noida Bakhshi Properties
Festival City Noida Bakhshi Properties Festival City Noida Bakhshi Properties
Festival City Noida Bakhshi Properties
 
Lifecycleofhostdeployedwithforemanandautomated
LifecycleofhostdeployedwithforemanandautomatedLifecycleofhostdeployedwithforemanandautomated
Lifecycleofhostdeployedwithforemanandautomated
 
Doriana Capenti Tecate
Doriana Capenti TecateDoriana Capenti Tecate
Doriana Capenti Tecate
 
Hola profe
Hola profeHola profe
Hola profe
 
디자인매니지먼트2
디자인매니지먼트2디자인매니지먼트2
디자인매니지먼트2
 
Prueba 1
Prueba 1Prueba 1
Prueba 1
 
Miley cyrus digipak
Miley cyrus digipakMiley cyrus digipak
Miley cyrus digipak
 
La Tierra, planeta del sistema solar
La Tierra, planeta del sistema solarLa Tierra, planeta del sistema solar
La Tierra, planeta del sistema solar
 
Simple Finance Presentation
Simple Finance PresentationSimple Finance Presentation
Simple Finance Presentation
 
Oracle Enterprise manager 13c Installation
Oracle Enterprise manager 13c InstallationOracle Enterprise manager 13c Installation
Oracle Enterprise manager 13c Installation
 
Photography evaluation
Photography evaluationPhotography evaluation
Photography evaluation
 
My music video idea
My music video ideaMy music video idea
My music video idea
 
Oracle business intelligence overview
Oracle business intelligence overviewOracle business intelligence overview
Oracle business intelligence overview
 

Similar to Elasticsearch server Chapter5

The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
SANG WON PARK
 

Similar to Elasticsearch server Chapter5 (7)

정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)
 
[APL OJT] REST API TEST
[APL OJT] REST API TEST[APL OJT] REST API TEST
[APL OJT] REST API TEST
 
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
 
Warp
WarpWarp
Warp
 
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
 

More from Mungyu Choi

More from Mungyu Choi (18)

HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
 
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverHTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
 
Chapter3 - learning spark
Chapter3 - learning sparkChapter3 - learning spark
Chapter3 - learning spark
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
 
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
 
정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
 
b+tree
b+treeb+tree
b+tree
 
Hdfs
HdfsHdfs
Hdfs
 
hadoop ch1
hadoop ch1hadoop ch1
hadoop ch1
 
A tour of go
A tour of goA tour of go
A tour of go
 
Ch11. server infra
Ch11. server infraCh11. server infra
Ch11. server infra
 
대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6
 
4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하
 
Chap4_2
Chap4_2Chap4_2
Chap4_2
 

Elasticsearch server Chapter5

  • 2. 개요 • 아파치 루씬의 점수 계산 • elasticsearch가 제공하는 스크립트 기능 • 다양한 언어를 사용한 자료 색인과 검색 • 반환되는 다큐먼트의 점수에 영향을 미치는 다양한 질의 사용 • 색인 과정에서 중요도 사용 • 의미가 동일한 단어 • 특정 다큐먼트가 반환된 이유 점검 • 점수 계산과 관련한 세부사항 점검
  • 3. 1. Apache Lucene scoring • 점수는 질의에 대한 다큐먼트의 관련성의 수치 • 기본 아파치 루씬의 점수 계산 알고리즘은 TD/IDF
 (Term Frequency - Inverse Document Frequency)
 • 다큐먼트가 동일 하더라도 
 질의를 할 때마다 계산 점수가 다르다
  • 4. Score properties • 다큐먼트 중요도(Document boost) 색인과정에서 다큐먼트에 주어진 중요도 • 필드 중요도(Field boost) 질의와 색인 과정에서 필드에 주어진 중요도 • 조정지수(Coord) 다큐먼트가 포함한 키워드 수에 기반한 값 • IDF(Inverse Document Frequency) 해당 키워드가 얼마나 드문지를 나타내는 값 • 길이기준(Length norm) 필드가 포함한 키워드 수에 기반. 필드가 길수록 작아진다. • Term frequency 해당 키워드가 도큐먼트에 출현하는 빈도
  • 5. 기본 점수 계산 공식 score(q,d)=coord(q,d)∗queryNorm(q)∗∑(tf (tind)∗idf (t)2 ∗boost(t)∗norm(t,d)) 
 • 일치되는 키워드가 드물수록 다큐먼트 점수가 높아질 것이다. • 다큐먼트 필드가 작을수록 다큐먼트 점수가 높아질 것이다. • 필드에 대한 중요도가 높을수록 다큐먼트 점수가 높아질 것이다. • ref : https://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/similarities/ TFIDFSimilarity.html
  • 6. 2. Scripting 기능 • elasticsearch는 스크립트작성을 위해 여러 언어를 지원 • 기본적으로 MVEL사용 • javascript, python, groovy지원
  • 7. 3. 다양한 언어로 내용 검색 • 다국어 언어 자료에 대한 다양한 분석기를 선택 가능 • 언어에 종류에 상관없는 어간 추출 분석 제공
  • 8. 여러 언어를 처리하기 • 여러 언어를 처리하는 방법 언어별로 나눠 다른 타입에 다큐먼트를 저장 언어별로 분리된 색인에 다큐먼트를 저장 단일 다큐먼트의 여러 필드에 언여벌로 저장
  • 9. 여러 언어를 감지하기 • 언어 감지 라이브러리 • 아파치 티카(Apache Tika) • 랭귀지 디텍션(Language detection) • 텍스트가 길어질수록 언어 감지가 정확해진다.
  • 10. 중요도로 점수에 영향을 미치기 • 질의 중요도 • 질의 시 query와 field에 중요도 설정 • 색인 시점의 중요도 • 색인 시점에 중요도 설정 • 질의와 독립적인 중요도 값을 가짐
  • 11. 중요도를 질의에 추가 {
 "query" : { "prefix" : { "title" : { "value" : "cri", "boost" : 3.0 } } } }
  • 12. Demo - boost query
  • 13. 중요도를 질의에 추가 { "query": { "constant_score": { "query": { "query_string": { "query": "available:false author:heller" } } } } }
  • 15. 중요도를 색인시점에 추가 { "title" : "The Complete Sherlock Holmes", "author" : "Arthur Conan Doyle", "year": 1936 }
  • 16. 중요도를 색인시점에 추가 { "title" : "The Complete Sherlock Holmes", "author" : { "_value" : "Arthur Conan Doyle", "_boost" : 10.0, }, "year": 1936 }
  • 17. 6. 의미가 동일한 단어 • 하나의 단어를 검색, 의미가 동일하거나 유사한 단어 매칭 • 예를들어 crime검색 시 ‘Crime and Punishment’
 뿐만이 아니라, criminality나 abuse단어도
 동의어로 설정해 검색시 적용 • 동의어가 바뀔 때마다 자료 재색인 필요
  • 18. synonym필터 • analyzer에 synonym필터 적용 • 매핑에 synonym프로퍼티 추가
  • 19. 허용되는 동의어 형식 • 명시적인 동의어 • criminality, wars => crime • abuse => punishment • 동의어 확장 • one, two, three => one, two, three
  • 20. 7. 질의 해설 기능 이해 Analyze API(Testing Analyzers) elasticsearch이 어떻게 tokenize하고 index에 어떻게 저장되는지 이해하기가 힘들다. 그래서 elasticsearch는 analyze API를 제공(디버깅용도) 참고 : https://www.elastic.co/guide/en/elasticsearch/guide/current/analysis-intro.html?q=_analy
  • 22. 7. 질의 해설 기능 이해 Explain API 쿼리나 특정 도큐먼트가 어떻게 점수가 계산되어지는지 알아보는 기능 제공 참고 : https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html?q=_explain