본문 바로가기

Programming!

Spring Data Solr 사용해보기

우선 Solr 설치

http://lucene.apache.org/solr/


다운로드 후, 특정 디렉토리 생성

/home/eclipse4j/app-servers/solr  <- 이곳에 설치(압축해제)를 했다고 치자..

/home/eclipse4j/app-servers/solr/server/solr/my-solr <- 이곳이 내가 사용할 core 디렉토리


core 디렉토리에 필수 파일은

- db-data-config.xml ( DB 검색 )

- schema.xml

- solrconfig.xml


필수 파일은 example 에서 가져 오면 된다.


이후 몇가지 필수 작업은 mysql jdbc jar 를 solr webapps 에 포함 시키는것과 db-data-config.xml의 설정을 바꾸는 것 정도이다.

실행하자!!

$ ./bin/solr start



브라우저를 열어 http://localhost:8983/solr/ 로 이동한다.

다음과 같은 화면을 볼 수 있다.




Core Admin으로 이동해서 Core를 만들고 해당 코어로 이동후, 인덱싱을 실행하면 사실 설치는 끝난다.


하지만, 데이터를 지정하지 않았으니 검색이 안되겠지.. 다시 콘솔로 돌아가서 db-data-config.xml 와 scheme.xml 의 컬럼을 맞추는 작업을 한 후, 재 인덱싱 실행.



spring-data-solr

@Configuration

@EnableSolrRepositories(basePackageClasses = { SolrExample.class }, multicoreSupport = true)

public class SolrContextConfig {


@Value("${solr.host}")

private String solrHost;


@Bean

public SolrServer solrServer() {

              return new HttpSolrServer(solrHost);

}


}


위와 같이 Config 를 만들고 Dto와 Repository를 만든다.

@Data

@SolrDocument(solrCoreName="mycore")

public class SolrSearchResult {


@Id

private Long id;


@Field

private String title;


@Field

private String contents;


}



public interface SolrFindRepository extends SolrRepository<SolrSearchResult, String> {

@Query(value = "title:?0 or contents:?0")

FacetPage<SolrSearchResult> findByTitleOrContentsContains(String word, Pageable page);

}


이후는 기존 MVC 코드와 같으므로 무시.


자세한 내용은 http://docs.spring.io/spring-data/solr/docs/1.4.2.RELEASE/reference/html/ 여기서 참조 한다.