jetalog.net

Schema 생성


Schema[1]는 Lucene에 저장되는 문서의 구조입니다.

Lucene만 단독으로 사용한다면 문서를 저장하고 꺼낼 때마다 설정해줘야 하지만 Solr는 미리 설정해두고 사용하도록 해줍니다. 덕분에 문서를 저장하고 꺼낼 때 훨씬 간편하게 이용할 수 있죠.


이번 2편에서는 Schema를 설정하는 방법을 알아봅니다.


managed-schema 설정

  1. $SOLR_HOME\server\solr\board\conf에 있는 managed-schema[2] 파일을 열어주세요.
    메모장이나 Sublime Text, Notepad+ 등 텍스트 편집기로 열면 됩니다.

  2. 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" />

  3. 터미널에 아래 명령어를 입력해서 Solr를 실행해주세요.
    Windows: bin\solr start
    Mac, Linux: bin/solr start

    만약 이미 실행 중이라면 아래 명령여를 입력해서 Solr를 다시 시작할 수 있습니다.
    Windows: bin\solr restart -p 8983
    Mac, Linux: bin/solr restart

설정 확인

  1. 설정이 잘 됐는지 확인하기 위해 Solr Admin으로 접속하고, Core Selector에서 board를 선택해주세요.
    http://localhost:8983/solr/#/board
  2. 왼쪽 메뉴에서 Schema를 선택해주세요.

  3. 오른쪽 화면에 Field 목록을 열었을 때 새로 추가한 Field가 보이는지 확인해주세요.
    board, date, text, title, writer 등이 보이면 설정이 완료된겁니다!

개념 안내

  1. Schema
    명칭 그대로 스키마입니다. Lucene에 저장되는 문서의 구조를 미리 정의해놓았다고 생각하시면 됩니다. 만약 RDBMS를 많이 쓰셨다면 RDBMS의 스키마와 유사한 개념이라고 생각하셔도 무방합니다.
    자세한 내용은 다음 문서를 참고해주세요: https://wiki.apache.org/solr/SchemaXml

  2. managed-schema
    이전 버전의 Solr에서는 schema.xml 파일이었으나 명칭이 변경되었습니다. schema.xml 파일과 마찬가지로 XML 방식으로 Schema를 정의합니다. 사실 내부 구조도 거의 같습니다.
    자세한 내용은 다음 문서를 참고해주세요: https://cwiki.apache.org/confluence/display/solr/Overview+of+Documents,+Fields,+and+Schema+Design

  3. Field
    RDBMS의 Column과 유사한 개념입니다. 문서의 내용이 저장될 형태를 나타냅니다. managed-schema 파일에서는 <field /> 태그로 정의합니다.

  4. <field /> 태그의 속성
    다음과 같은 속성들을 이용할 수 있습니다. 각 속성의 의미는 아래와 같습니다.
    name: Field의 이름
    type: Field의 자료 형태
    indexed: 색인을 할 Field인지 여부
    stored: 전체 내용을 저장할지 여부
    multiValued: 한 문서에 이 Field가 여러개 존재할 수 있는지 여부

  5. <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


< 1. 준비하기

3. SolrJ 적용하기 >


내용에 있는 오류나 질문은 댓글을 달아주세요.




저작자 표시 비영리 동일 조건 변경 허락
신고
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다