2. SOLR 설정
2.1 scheme.xml 편집
SOLR 홈 디렉토리 아래의 scheme.xml 파일을 편집기로 연 후, 도큐먼트의 필드정보를 설정한다.
2.1.1 filed속성 정리
<fields>
<field name="docId" type="long" indexed="true" stored="true" required="true" />
<field name="categoryId" type="long" indexed="false" stored="true" />
<field name="contents" type="string" indexed="true" stored="true" />
</fields>
- name(필수) : 필드의 이름
- type(필수) : <types>영역에 미리 정의된 데이터 타입
- indexed : 인덱싱 여부(true면 인덱싱이 되어 검색 및 정렬이 가능)
- stored : true면, 데이터를 보관한다.
- required : 필수로 입력되어야 하는 필드일 경우 true로 설정
- compressed : true이면, gzip을 이용하여 데이터를 압축해서 저장한다.
(TextField와 StrField 타입만 가능하다. )
- multiValued : true이면 해당 필드는 한 document 마다 여러 개의 값을 가질 수 있다.
2.1.2 고유키 설정
고유키로 지정된 필드는 중복된 값이 인덱스에 존재할 수 없고, 만약 인덱싱 시에 동일한 값이 이미 존재한다면, 오래된 문서에 대한 인덱싱 정보는 삭제되고 새로운 정보가 남게 된다.
<uniqueKey> docId </uniqueKey>
(설정된 필드는 반드시 인덱싱 되어야 한다.)
2.1.3 기본 검색 필드 설정
검색 시 특정 필드가 지정되지 않은 겨우 기본적으로 검색 대상이 될 필드를 설정한다.
<defaultSearchField>text</defaultSearchField>
2.1.4 검색 연산자 지정
복수개의 단어 검색 시 적용할 연산자를 설정한다.
(AND -> 모든 단어를 포함, OR –> 하나 이상의 단어를 포함한 컨텐츠 검색)
<solrQueryParser defaultOperator="OR"/>
2.1.5 멀티 인덱싱 설정
여러 개의 필드를 하나의 필드처럼 사용해야 할 경우에 아래와 같이 설정한다. (4번의 검색 연산자 적용 등)
<copyField source="title" dest="text"/>
<copyField source="contents" dest="text"/>
2.2 필터 매핑 설정
WEB-INF/web.xml 파일에서 아래처럼 디스패처 필터의 매핑 설정을 추가한다.
<filter>
<filter-name>SolrRequestFilter</filter-name>
<filter-class>org.apache.solr.servlet.SolrDispatchFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SolrRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>