반응형
Schema 생성
Schema[1]는 Lucene에 저장되는 문서의 구조입니다.
Lucene만 단독으로 사용한다면 문서를 저장하고 꺼낼 때마다 설정해줘야 하지만 Solr는 미리 설정해두고 사용하도록 해줍니다. 덕분에 문서를 저장하고 꺼낼 때 훨씬 간편하게 이용할 수 있죠.
이번 2편에서는 Schema를 설정하는 방법을 알아봅니다.
managed-schema 설정
- $SOLR_HOME\server\solr\board\conf에 있는 managed-schema[2] 파일을 열어주세요.
메모장이나 Sublime Text, Notepad+ 등 텍스트 편집기로 열면 됩니다. 126행에 아래 코드를 삽입하고 저장해주세요.
아래 코드는 <field /> 태그를 이용하여 앞으로 색인에 필요한 Field[3]를 설정하는 내용이 담겨있습니다.
<field name="title" type="text_general" indexed="true" stored="true" multivalued="false" /> <field name="writer" type="string" indexed="true" stored="true" multivalued="false" /> <field name="board" type="text_general" indexed="true" stored="true" multivalued="false" /> <field name="date" type="date" indexed="true" stored="true" multivalued="false" /> <field name="text" type="text_general" indexed="true" stored="true" multivalued="true" /> <copyfield source="title" dest="text" /> <copyfield source="writer" dest="text" /> <copyfield source="board" dest="text" />
- 터미널에 아래 명령어를 입력해서 Solr를 실행해주세요.
Windows: bin\solr start
Mac, Linux: bin/solr start
만약 이미 실행 중이라면 아래 명령여를 입력해서 Solr를 다시 시작할 수 있습니다.
Windows: bin\solr restart -p 8983
Mac, Linux: bin/solr restart
설정 확인
- 설정이 잘 됐는지 확인하기 위해 Solr Admin으로 접속하고, Core Selector에서 board를 선택해주세요.
http://localhost:8983/solr/#/board - 왼쪽 메뉴에서 Schema를 선택해주세요.
- 오른쪽 화면에 Field 목록을 열었을 때 새로 추가한 Field가 보이는지 확인해주세요.
board, date, text, title, writer 등이 보이면 설정이 완료된겁니다!
개념 안내
- Schema
명칭 그대로 스키마입니다. Lucene에 저장되는 문서의 구조를 미리 정의해놓았다고 생각하시면 됩니다. 만약 RDBMS를 많이 쓰셨다면 RDBMS의 스키마와 유사한 개념이라고 생각하셔도 무방합니다.
자세한 내용은 다음 문서를 참고해주세요: https://wiki.apache.org/solr/SchemaXml - managed-schema
이전 버전의 Solr에서는 schema.xml 파일이었으나 명칭이 변경되었습니다. schema.xml 파일과 마찬가지로 XML 방식으로 Schema를 정의합니다. 사실 내부 구조도 거의 같습니다.
자세한 내용은 다음 문서를 참고해주세요: https://cwiki.apache.org/confluence/display/solr/Overview+of+Documents,+Fields,+and+Schema+Design - Field
RDBMS의 Column과 유사한 개념입니다. 문서의 내용이 저장될 형태를 나타냅니다. managed-schema 파일에서는 <field /> 태그로 정의합니다. - <field /> 태그의 속성
다음과 같은 속성들을 이용할 수 있습니다. 각 속성의 의미는 아래와 같습니다.
name: Field의 이름
type: Field의 자료 형태
indexed: 색인을 할 Field인지 여부
stored: 전체 내용을 저장할지 여부
multiValued: 한 문서에 이 Field가 여러개 존재할 수 있는지 여부 - <copyField /> 태그
Field의 값을 다른 Field로 복사합니다. 이 태그를 이용하면 검색 성능 향상 효과를 얻을 수 있습니다.
예를 들어 본문 내용에 대해서 text Field로 복사하도록 한 경우, content Field는 indexed를 끄고, stored만 켭니다. 반대로 text Field는 indexed를 켜고, stored를 끕니다. 제목이나 기타 정보들에 대해서도 이렇게 하면, 나중에 검색할 때 text Field만 검색하면 되도록 만들 수 있습니다.
copyField에 대한 자세한 내용은 다음 문서를 참고해주세요: https://cwiki.apache.org/confluence/display/solr/Copying+Fields
내용에 있는 오류나 질문은 댓글을 달아주세요.
반응형