기본 콘텐츠로 건너뛰기

라벨이 Schema.xml인 게시물 표시

[SolrCloud] ZooKeeper와 SolrCloud를 Tomcat7 에 설정해 보기

[ 참고 및 주의 사항 ] 여기에 정리된 내용은 원문 을 기준으로 여러 가지 테스트와 문제점의 검토 및 해결책을 찾으면서 나름대로 정리한 내용으로 오역과 잘 못 이해하고 정리한 부분이 있을 수 있습니다. 또한 원문의 Solr 버전이 지금 테스트를 진행하고 있는 4.10.2 버전과 다르기 때문에 내용을 잘 확인하면서 진행 해야 합니다. SolrCloud Collection 디자인 SolrCloud 를 운영하기 위해서는 Cluster를 디자인을 하는 것이 가장 중요한 부분이다. 개념적으로는 SolrCloud Cluster 내에서 Collection 과 Shard 는 논리적인 요소로 여러 개의 물리적인 Core 들의 집합을 형성하기 위한 것 이다. 샘플 테스트를 위해서 다음과 같이 Cluster를 디자인 한 것으로 가정한다. Cluster에는 단일 Collection을 관리하고 이름을 test_collection 이라고 한다. ZooKeeper Ensemble 은 3개의 복제된 서버들을 사용하는 것으로 한다. Replication Factor를 3으로 지정하여 SolrCloud 에 3개의 Node를 구성한다. SolrCloud 에 3개의 Shard 를 구성한다. 3개 노드의 3개 Shard에 복제 본들을 수동으로 배포한다. 필요 항목들 이 작업을 테스트하기 위해서는 다음과 같은 구성이 필요하다. Apache Tomcat 7.x Apache ZooKeeper 3.4.6 Apache Solr 4.10.2 Notes 위의 디자인된 SolrCloud 는 단일 장비에서 테스트를 진행한다. 실제로는 여러 장비에 분산하여 운영되는 것이 정상이다. 샘플 디렉터리 구성 단일 장비에서 테스트를 진행할 것이기 때문에 “D:\SolrCloud” 를 기본 경로로 사용한다. Node 구성을 위한 각 Solr Home 폴더 D: \SolrCloud \solr \home 1 D: \SolrCloud \solr \home 2

[ SOLR ] Schema 에 기본 값 설정

  Solr 기반 검색 어플리케이션을 테스트하면서 재미있는 증상이 발견 되었다. 증상이라는 것이 일반적인 전체 데이터 조회 (q=*:*) 에서 Score 기반의 정렬에서는 특정 필드가 보이지만, 개별 필드에 대한 정렬 (sort=DueDate desc) 을 실행하면 특정 필드가 사라지는 현상이다.     이런 현상 때문에 여러 가지 테스트를 진행하면서 원인을 파악하던 중에 Solr 에서는 값이 존재하지 않는 필드를 조회할 때 무시하는 상황이 존재한다는 것이다. 즉, 문서에 10개의 필드가 존재하고 전체 필드를 조회할 때 해당 문서에 A 라는 필드가 값이 없다면 이를 제외한 9개의 필드만 반환하는 상황이다.     특정 필드처럼 보였던 이유는 MySQL 에서 Data Import 를 수행할 때 StartDate / EndDate / DueDate 의 일자 컬럼이 존재하는데 EndDate의 경우는 값이 존재하지 않을 수 있기 때문에 Solr 로 전달될 때 NULL 값이 전달되고, Solr 에서는 값이 NULL 이기 때문에 해당 문서에 EndDate를 처리하지 않는 상황인 것이다. 따라서 전체 데이터를 조회할 때는 Score 순서에 따라서 문서들이 보여지면서 EndDate 가 존재하는 데이터들이 보였지만, DueDate를 기준으로 정렬을 다시 구성해서 조회할 때는 상위에 보여지는 문서들에 EndDate 값이 존재하지 않아서 조회 결과에 EndDate 필드가 누락되어 보여진 것이다. 계속 페이징을 해서 내려가 보면 EndDate가 존재하는 문서는 제대로 해당 필드가 보인다.     이 문제를 해결하기 위해서는 Schema.xml 의 필드 정의에서 아래와 같이 기본 값을 설정하여 NULL Value 로 인해서 해당 필드가 누락되지 않도록 설정해 주면 된다. <field name="endDt" type="tdate" indexed="true" sto