SlideShare une entreprise Scribd logo
1  sur  21
Solr 검색엔진구축 및
서비스 운영/개발
최 일 규
2016-04-25 기준
Lucene
SOLR
Lucene은 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라
이브러리이다.
Apache Lucene 프로젝트에 기반을 둔 오픈소스 검색엔진
Solr 란?
Solr의 주요기능1
Full-text search
높은 웹 트래픽을 감당할 수 있도록 최적화.
XML, JSON과 HTTP등의 표준 오픈 인터페이스를 제공 (Restful-API)
HTML 기반의 관리자 인터페이스
Linearly scalable(=수평확장), auto index replication (=복제),
자동 failover(=장애조치)와 복구
유연하고 강력한 XML파일 기반의 설정 환경
확장가능한 플러그인 아키텍처
(=한글형태소 또는 자소분해, 사용자정의 토큰나이저 & 필터 개발가능)
Solr의 주요기능2
- 일반 문자열을 비롯 Numberic 타입, 다이나믹 필드, 유니크 키 지원
- Lucene 쿼리 랭퀴지 확장지원
- 검색과 필터링 지원
- Geospatial 위치기반 검색 지원 (예) 반경 2Km 이내 검색 등..
- 성능 최적화, 캐시지원
- 로그 모니터링
- 실시간(Near Real-time) 증분 색인과 색인 복제(replication)지원
- 분산 검색과 다중 호스트간 샤드(sharded) 지원
- 데이터베이스와 XML 파일 그리고 HTTP를 이용한 다양한 색인방식 지원
- Apache Tika를 이용한 다양한 형식의(=PDF, Word, HTML 등) 문서 색인
검색시스템 인덱싱 구조 (DataImportHandler 방식)
SOLR 색인서버
기업정보
채용정보
인재검색
Database View Or SP CALL Solr 증분 색인
Curl 호출 반영
LIVE Data
CORE
인덱스 로그 테이블
Solr index Data
Delta-Import
Full-Import
Data Import
Crontab에 shell script 배치작업 자동화
Replication 방식의 분산처리
Service server2Service server1Index server
인덱스 서버 검색 서버1
Replication
Replication
검색 서버2
Load Balancer
응답(XML/JSON 리턴)
플랫폼 : 리눅스 (CentOS), WAS (Tomcat)
요청 (GET)
Solr 환경설정
1. SolrConfig 설정
- Cache
- Replication
- DataImportHandler 설정
2. Schema 설정
- 스키마 필드리스트 설정 (type, indexed, stored, required, multivalued 등)
- UniqueKey 설정
- 한글형태소, 자소등 커스텀 type Analyer 설정
3. Data-Config.xml 설정
- Query
- DeltaImportQuery
- deltaQuery
- deletePkQuery
카테고리 화면
Facet 쿼리 및 Filter 쿼리 적용예
상품 및 일반리스트 화면
상품리스트 및 소팅 적용예
ASP용 Solr client 개발
1) 다음파일 Include
- Solr_GlobalSearch.asp (Solr Helper 클래스)
- Solr_JSON_Helper.asp (Jscript용 JSON파서)
2) Call Solr_JSON_Helper() ‘서브프로시저 호출
3) 일반쿼리 예
Set srchHandler = New Solr_SearchHandler
srchHandler.init 아이피, 포트, WAS, 코어명
srchHandler.setQuery "쿼리“
srchHandler.setDefaultOp “AND”
srchHandler.setSortField “score DESC”
srchHandler.setStart 0
srchHandler.setRows 20
srchHandler.setResultField “Job_Title,Job,JOB_CONTENT”
'결과받기
Set searchData = ParseJSON(srchHandler.getResults())
totalCnt = searchData.response.numFound
Set itemSet = searchData.response.docs
4) setQuery 생성예
(Title:자바 And -Title:부산 And Content:채용)^1.5
http://www.solrtutorial.com/solr-query-syntax.html
패싯쿼리 예
5) 패싯쿼리 예
Set srchHandler = New Solr_SearchHandler
srchHandler.init 아이피, 포트, WAS, 코어명
srchHandler.setQuery ”쿼리”
srchHandler.setFacetSort ”소팅”
srchHandler.setStart 0
srchHandler.setRows 0
srchHandler.setResultField ””
'패싯정보
srchHandler.setFacet "true"
srchHandler.setFacetField “필드명"
srchHandler.setFacetMinCount 1
srchHandler.setFacetNamedList "arrarr"
'결과받기
Set searchData = ParseJSON(srchHandler.getResults())
totalCnt = searchData.response.numFound
Set itemSet = searchData.response.docs
확장플러그인 개발 및 구축
- 아리랑 한글형태소 기반 분석기 적용
- 자동완성 기능을 위한 한글 자소분해(초성,중성,종성,복모음)
- 한글 자소분석기를 통한 DB Like 검색처럼 적용가능 (=주소록 검색등)
- N그램 토크나이저 (예) 분당자바개발 -> 분당|당자|자바|바개|개발
- CODE 기반 카테고리 검색설계 (PatternTokenizerFactory)
예)
키워드 품질 개선 및 사전구축
1. Default Operator : “AND” , Exact Match등 정밀도 향상
- 파이썬개발자 : “파이썬” AND “개발자”
2. Query-Time Boost 적용
- (title:자바)^1.5 (body:자바)
3. Index-Time Boost 적용 (Data Import xml설정)
- transformer="script:boost_up“
- <field column="$docBoost" />
- row.put('$docBoost',boost_num);
4. 사전구축을 통해 검색기능 향상
- 확장사전, 동의어, 복합명사 사전작업을 통한 향상된 의미기반 키워드 분해
서버 및 Tomcat튜닝
- GC로그, Out of Memory error Heap Dump 설정
- 충분한 JVM Heap 메모리 확보 (가용메모리의 50% 설정)
- 빠른 디스크 IO (퓨전IO, SSD등)
Solr 캐시확인 (HttpWatch)
유지관리 (Solr 서버 Health Check)
모바일 Push
알림
초기구축 후 트러블슈팅
1. 디스크가 꽉 찼을때 색인실패
- 데이터 갱신이 안되고, replication 오동작
- 디스크 확보 후 index파일을 삭제 후 재색인
- 과거 log가 정기적으로 지워질 수 있도록 쉘스크립트 배치
2. Facet쿼리시 키워드 쿼리에 “*” 가 들어갔을때 서버 부하발생
- Load Average가 평균 1~2 -> 9이상으로 급격히 증가하는 문제발생
으로 패치
Analyzer?
Analyzer Tokenizer N개 TokenFilter= +
Suggest (Prefix 방식)
Indexing 아버지=
ㅇㅏㅂㅓㅈㅣ ㅇㅂㅈ
Query Prefix Query=
Suggest (Edge n-Gram 방식)
Indexing
아버지
=
ㅇ ㅇ
Query Match Query=
ㅇㅏ ㅇㅂ
ㅇㅏㅂ ㅇㅂㅈ
감사합니다.

Contenu connexe

Tendances

엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리Junyi Song
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나종현 김
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5Mungyu Choi
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육 Rjs Ryu
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629Dosang Yoon
 
201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guide201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guideJunyi Song
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with TajoGruter
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈jihoon kim
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJung Han
 
집단 지성 (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 & RankingIan Choi
 

Tendances (20)

엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guide201804 neo4 j_cypher_guide
201804 neo4 j_cypher_guide
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with Tajo
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
집단 지성 (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
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
 
InfiniFlux 성능 지표
InfiniFlux 성능 지표InfiniFlux 성능 지표
InfiniFlux 성능 지표
 
Learning spark ch1-2
Learning spark ch1-2Learning spark ch1-2
Learning spark ch1-2
 

Similaire à Solr development case

overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Sungjoon Yoon
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오Yun-hwan Kim
 
온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템Sang-Kyun Kim
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document오석 한
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and DebuggingMungyu Choi
 
REST with Spring
REST with SpringREST with Spring
REST with Spring강우 김
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약정아 손
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기NAVER Engineering
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay Lee
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Similaire à Solr development case (20)

overview of spring4
overview of spring4overview of spring4
overview of spring4
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Srping data rest
Srping data restSrping data rest
Srping data rest
 
김윤환_포트폴리오
김윤환_포트폴리오김윤환_포트폴리오
김윤환_포트폴리오
 
온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
 
REST with Spring
REST with SpringREST with Spring
REST with Spring
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
REST Concept
REST ConceptREST Concept
REST Concept
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 

Solr development case

  • 1. Solr 검색엔진구축 및 서비스 운영/개발 최 일 규 2016-04-25 기준
  • 2. Lucene SOLR Lucene은 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라 이브러리이다. Apache Lucene 프로젝트에 기반을 둔 오픈소스 검색엔진 Solr 란?
  • 3. Solr의 주요기능1 Full-text search 높은 웹 트래픽을 감당할 수 있도록 최적화. XML, JSON과 HTTP등의 표준 오픈 인터페이스를 제공 (Restful-API) HTML 기반의 관리자 인터페이스 Linearly scalable(=수평확장), auto index replication (=복제), 자동 failover(=장애조치)와 복구 유연하고 강력한 XML파일 기반의 설정 환경 확장가능한 플러그인 아키텍처 (=한글형태소 또는 자소분해, 사용자정의 토큰나이저 & 필터 개발가능)
  • 4. Solr의 주요기능2 - 일반 문자열을 비롯 Numberic 타입, 다이나믹 필드, 유니크 키 지원 - Lucene 쿼리 랭퀴지 확장지원 - 검색과 필터링 지원 - Geospatial 위치기반 검색 지원 (예) 반경 2Km 이내 검색 등.. - 성능 최적화, 캐시지원 - 로그 모니터링 - 실시간(Near Real-time) 증분 색인과 색인 복제(replication)지원 - 분산 검색과 다중 호스트간 샤드(sharded) 지원 - 데이터베이스와 XML 파일 그리고 HTTP를 이용한 다양한 색인방식 지원 - Apache Tika를 이용한 다양한 형식의(=PDF, Word, HTML 등) 문서 색인
  • 5. 검색시스템 인덱싱 구조 (DataImportHandler 방식) SOLR 색인서버 기업정보 채용정보 인재검색 Database View Or SP CALL Solr 증분 색인 Curl 호출 반영 LIVE Data CORE 인덱스 로그 테이블 Solr index Data Delta-Import Full-Import Data Import Crontab에 shell script 배치작업 자동화
  • 6. Replication 방식의 분산처리 Service server2Service server1Index server 인덱스 서버 검색 서버1 Replication Replication 검색 서버2 Load Balancer 응답(XML/JSON 리턴) 플랫폼 : 리눅스 (CentOS), WAS (Tomcat) 요청 (GET)
  • 7. Solr 환경설정 1. SolrConfig 설정 - Cache - Replication - DataImportHandler 설정 2. Schema 설정 - 스키마 필드리스트 설정 (type, indexed, stored, required, multivalued 등) - UniqueKey 설정 - 한글형태소, 자소등 커스텀 type Analyer 설정 3. Data-Config.xml 설정 - Query - DeltaImportQuery - deltaQuery - deletePkQuery
  • 8. 카테고리 화면 Facet 쿼리 및 Filter 쿼리 적용예
  • 9. 상품 및 일반리스트 화면 상품리스트 및 소팅 적용예
  • 10. ASP용 Solr client 개발 1) 다음파일 Include - Solr_GlobalSearch.asp (Solr Helper 클래스) - Solr_JSON_Helper.asp (Jscript용 JSON파서) 2) Call Solr_JSON_Helper() ‘서브프로시저 호출 3) 일반쿼리 예 Set srchHandler = New Solr_SearchHandler srchHandler.init 아이피, 포트, WAS, 코어명 srchHandler.setQuery "쿼리“ srchHandler.setDefaultOp “AND” srchHandler.setSortField “score DESC” srchHandler.setStart 0 srchHandler.setRows 20 srchHandler.setResultField “Job_Title,Job,JOB_CONTENT” '결과받기 Set searchData = ParseJSON(srchHandler.getResults()) totalCnt = searchData.response.numFound Set itemSet = searchData.response.docs 4) setQuery 생성예 (Title:자바 And -Title:부산 And Content:채용)^1.5 http://www.solrtutorial.com/solr-query-syntax.html
  • 11. 패싯쿼리 예 5) 패싯쿼리 예 Set srchHandler = New Solr_SearchHandler srchHandler.init 아이피, 포트, WAS, 코어명 srchHandler.setQuery ”쿼리” srchHandler.setFacetSort ”소팅” srchHandler.setStart 0 srchHandler.setRows 0 srchHandler.setResultField ”” '패싯정보 srchHandler.setFacet "true" srchHandler.setFacetField “필드명" srchHandler.setFacetMinCount 1 srchHandler.setFacetNamedList "arrarr" '결과받기 Set searchData = ParseJSON(srchHandler.getResults()) totalCnt = searchData.response.numFound Set itemSet = searchData.response.docs
  • 12. 확장플러그인 개발 및 구축 - 아리랑 한글형태소 기반 분석기 적용 - 자동완성 기능을 위한 한글 자소분해(초성,중성,종성,복모음) - 한글 자소분석기를 통한 DB Like 검색처럼 적용가능 (=주소록 검색등) - N그램 토크나이저 (예) 분당자바개발 -> 분당|당자|자바|바개|개발 - CODE 기반 카테고리 검색설계 (PatternTokenizerFactory) 예)
  • 13. 키워드 품질 개선 및 사전구축 1. Default Operator : “AND” , Exact Match등 정밀도 향상 - 파이썬개발자 : “파이썬” AND “개발자” 2. Query-Time Boost 적용 - (title:자바)^1.5 (body:자바) 3. Index-Time Boost 적용 (Data Import xml설정) - transformer="script:boost_up“ - <field column="$docBoost" /> - row.put('$docBoost',boost_num); 4. 사전구축을 통해 검색기능 향상 - 확장사전, 동의어, 복합명사 사전작업을 통한 향상된 의미기반 키워드 분해
  • 14. 서버 및 Tomcat튜닝 - GC로그, Out of Memory error Heap Dump 설정 - 충분한 JVM Heap 메모리 확보 (가용메모리의 50% 설정) - 빠른 디스크 IO (퓨전IO, SSD등)
  • 16. 유지관리 (Solr 서버 Health Check) 모바일 Push 알림
  • 17. 초기구축 후 트러블슈팅 1. 디스크가 꽉 찼을때 색인실패 - 데이터 갱신이 안되고, replication 오동작 - 디스크 확보 후 index파일을 삭제 후 재색인 - 과거 log가 정기적으로 지워질 수 있도록 쉘스크립트 배치 2. Facet쿼리시 키워드 쿼리에 “*” 가 들어갔을때 서버 부하발생 - Load Average가 평균 1~2 -> 9이상으로 급격히 증가하는 문제발생 으로 패치
  • 19. Suggest (Prefix 방식) Indexing 아버지= ㅇㅏㅂㅓㅈㅣ ㅇㅂㅈ Query Prefix Query=
  • 20. Suggest (Edge n-Gram 방식) Indexing 아버지 = ㅇ ㅇ Query Match Query= ㅇㅏ ㅇㅂ ㅇㅏㅂ ㅇㅂㅈ