본문 바로가기
Work/발표자료

[발표자료] 솔라 디렉토리 구조 및 관리 콘솔

by ★용호★ 2017. 2. 20.

디렉토리 구조

먼저 contrib 디렉토리는 루씬에서와 같이 클러스터링과 맞춤법 검사 기능, 하이라이팅과 같은 확장 모듈들이 들어 있습니다. dist 디렉토리에는 contrib 모듈, SolrJ 클라이언트와 jar 파일들이 포함되어 있습니다. contrib 모듈에 대한 API 문서가 docs 디렉토리에 있으며 example 디렉토리에 앞으로 살펴볼 예제 서버가 들어있습니다. 마지막으로 licenses 디렉토리에는 Solr의 모든 종속성에 대한 라이센스 파일이 들어있습니다.


솔라 관리 콘솔

다음으로 솔라를 구동시키면 가장 먼저 보게 되는 관리 콘솔에 대해 살펴보겠습니다.

솔라를 구동 시키고 8983 포트로 접속하면 위와 같은 대시보드 페이지가 가장 먼저 로딩 됩니다. 이 페이지에는 현재 사용 중인 호스트에 대해 솔라 자체에 대한 정보들과 JVM, 메모리 사용량 등 시스템 설정들을 확인할 수 있습니다. 그리고 왼쪽 하단 메뉴에서 솔라 코어를 선택할 수 있습니다.

솔라 서버는 Jetty 기반으로 동작하고, 기본 8983 포트를 사용합니다. 앞서 본 디렉토리 구조에서 솔라 홈 디렉토리 위치에 코어 디렉토리를 추가 하면 다수의 코어를 사용할 수가 있습니다. 예제에서는 collection1이라는 코어를 제공하고 있고 그 하위 디렉토리의 conf에 설정 파일들이 위치하고 data에 색인 파일들이 생성됩니다.


솔라 홈 디렉토리

솔라 홈 디렉토리를 살펴보면, 하위에 코어인 collection1 디렉토리가 있고 예제에서 사용할 불용어 리스트가 lang 디렉토리에 있습니다. 그리고 스키마 정의를 위한 schema.xml 파일과 코어 설정을 위한 solrconfig.xml 파일에 대해서는 뒤에서 자세히 알아보도록 하겠습니다. 앞에서 설명했던 것 처럼 data 디렉토리에는 색인 파일이 생성되고, 예제를 위해 exampledocs 디렉토리에 예제 document가 들어있습니다.


솔라 쿼리 폼

다시 솔라 관리 콘솔로 돌아가서 코어를 선택한 후 쿼리 창을 선택하면 아래와 같은 쿼리 폼을 볼 수 있습니다.

쿼리를 실행하기 위해 입력해야 하는 폼들이 존재하고, 입력한 내용을 실행하면 오른편에 검색 결과 document 들이 출력됩니다.

각 폼 요소들을 살펴보면 제일 상단에 리퀘스트 핸들러를 지정하게 되어 있는데, 이 리퀘스트 핸들러는 solrconfig.xml 파일에 정의가 되어 있습니다. q 항목에는 쿼리를 입력하게 되는데 여기서는 iPod이 입력되어 iPod term을 가진 document들이 검색됩니다. fq는 필터 쿼리로써 q를 통해 검색된 document들을 fq 항목에 입력된 값으로 필터링합니다. 여기서는 manu 필드의 값이 Belkin인 항목들만 필터링 됩니다. sort에는 명시된 필드를 기준으로 정렬이 되는데 여기서는 price 필드를 기준으로 오름차순 정렬 됩니다. start는 페이징 번호이고 rows는 한 페이지당 표시될 document 수를 의미합니다. start가 1이고, rows가 10이라면 검색 결과 중 앞의 10개는 건너 뛰고 다음 10개를 출력하게 됩니다. fl에 명시된 항목들에 해당하는 필드들만 반환되고, 만약 q에 쿼리를 입력하지 않은 경우 df에 명시된 텍스트가 쿼리에 사용됩니다. wt를 통해 검색 결과를 xml, json, csv 등 여러 형식으로 표시할 수 있고, 하위 체크 박스를 통해 부가적인 기능을 사용할 수 있습니다.

관리 콘솔을 사용해서 쿼리를 하면 결과적으로는 HTTP GET 요청으로 쿼리를 날리게 되고, 위와 같이 직접 URL에 입력해서 동일한 결과를 얻을 수도 있습니다.

이제 검색 결과에 대해 하나씩 살펴보겠습니다.

lst 하위에는 쿼리에 대한 상태 정보가 포함되어 있고, result에 검색 결과 document들이 포함됩니다. 여기에는 검색 결과가 몇개인지, 관련도가 가장 높은 점수 값이 몇 점인지, 실제 매칭된 document들이 어떤 것인지가 표시됩니다. 아래의 결과를 보면 쿼리문이었던 iPod이 가장 많이 포함된 document가 가장 상위에 노출된 것을 볼 수 있습니다. 여기서 iPod 보다는 power에 조금 더 의미가 있어서 power가 포함된 document가 더 상위에 올라오게 하려면 iPod power^2와 같이 가중치를 줄 수가 있습니다.


솔라 browse

솔라에서는 또다른 리퀘스트 핸들러로 /browse 를 제공하는데 이 또한 solrconfig.xml 파일에 정의가 되어 있습니다.

browse 페이지를 살펴보면 velocity 기반으로 되어 있으며 검색 결과를 카테고리별로 분류해주는 facet 기능과 해당 document와 유사한 document를 찾아주는 More Like This, 지도 표시기능, 페이징, 하이라이팅 등의 기능을 제공합니다.

그리고 철자가 틀린 경우에도 올바른 텍스트를 추천해주는 맞춤법 검사도 제공됩니다.

댓글