Contents
see List작성일 2014. 10. 28.
본 문서 solr 및 java 에 대한 기초지식이 있는것을 가정하고 작성합니다.
혹시 궁금한 사항은 사이트 하단에 있는 연락처나 메일로 연락을 주시면
답해드리겠습니다.
루씬기반의 solr 검색엔진을 별도로 구축하여 운영한다.
그러나 한국어 서비스를 위해선 arirang 이라는 한글형태분석기라는 별도의 plug-in 을
필요로 한다 .
이 때문에 구축시 많은 문제점이 발생한다.
해서 간단히 구축 순서와 점검사항을 기술해 볼까한다.
우선 apache-solr 4.6.1 버전을 다운 받는다 .
작성한 날자인 14-10-28 기준으로 4.10.1 이 가장 최신 버전이지만
arirang 이 4.6.1 버전까지가 정식 지원하므로 해당 버전을 사용한다.
solr 내부에도 경량 컨테이너가 존재하지만 원활한 사용을 위해
apach-tomcat 7.52 를 설치한다..
하나의 시스템을 돌린다는 가정하에 solr 압축파일 내의 example/solr
를 복사하여 설치하고자 하는 디렉토리에 붙여넣는다.
solr 디렉토리에 lib 디렉토리를 생성하고
압축파일 최상위에 있는 contrib , dist 를 복사하여 추가한다.
tomcat 의 localhost 에 solr 를 추가하고 docBase 를 생성한 solr/lib/solr-4.6.1.war
로 지정한다.
Environment value 를 solr 룻 디렉토리로 지정한다.
그리고 solr 압축 파일의
example/lib/ext 디렉토리 밑에 있는 jar 파일을 tomcat/lib 로 복사한 후 example/resources 디렉토리 안에 있는 log4j.properties 파일도 같은 디렉토리로 복사한다.
아참 리눅스라면 모든 디렉토리 권한을 tomcat 과 일치시키는것 잊지말자
이제 톰캣을 구동해본다.
지정한 포트명으로 브라우저를 통해 확인하면

다음과 같이 뜬다.
이제 arirang 을 설치할차례다
한글형태분석소 카페에서
ariang 4.6+ 버전을 받아서
tomcat/webapps/solr/WEB-INF/lib
에 집어 넣는다.
그리고
solr/collection1/conf
에 schema.xml 에
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ko.KoreanTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.ko.KoreanFilterFactory" hasOrigin="false" hasCNoun="true" bigrammable="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ko.KoreanTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.ko.KoreanFilterFactory" hasOrigin="false" hasCNoun="false" bigrammable="false" queryMode="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
를 추가하고 스키마를 지정한다 스키마를 지정할때는 스키마 타입도 함께 지정해야한다.
그리고 solrconfig.xml 수정하여
solr-dataimporthandler-.*\.jar 에 해당하는 lib 태그를 추가하고
상대경로로되어있는 것을 절대경로로 변경한다.
그리고 db 로부터의 import 를 위해 data-config.xml 를 생성해 추가하고
solrconfig.xml 에 등록한다.
참 tomcat /lib 에 db 에 해당하는 드라이버 lib 를 넣는것을 잊지말자.
또 log4j.properties 파일을 수정하여 로그를 기록한 디렉토리도 바꿔준다.
그리고 톰캣을 구동한다.
구동이 정상적으로 완료되면 설치된 ip와 포트로
solr/dataimport?command=full-import
쿼리를 날려본다.
idea 와 생성된 색인수가 표시되면 성공한것이다.
java
| No | 작성일 | Title |
|---|---|---|
| 3388 | 2026. 08. 22. | Java CompletableFuture로 외부 API 병렬 호출을 안전하게 구성하는 방법 |
| 3356 | 2026. 08. 14. | Java record와 sealed interface로 안전한 API 응답 모델 만들기 |
| 3324 | 2026. 08. 05. | Java 가상 스레드 실전 적용 가이드: I/O 중심 API의 동시성 구조 바꾸기 |
| 3292 | 2026. 07. 28. | Java 메모리 사용량이 계속 늘어날 때: Heap Dump와 JFR로 누수 원인 찾기 |
| 3261 | 2026. 07. 20. | Java record로 API DTO를 단순하게 만드는 방법: 검증·변환·직렬화 실전 적용 |
| 3235 | 2026. 07. 12. | Java API 동시 호출 폭주 대응: Thread Pool, timeout, 장애 격리로 안정성 올리기 |
| 3178 | 2026. 07. 03. | Java 메모리 누수 진단 가이드: jcmd와 JFR로 원인 좁히기 |
| 3130 | 2026. 06. 25. | Java 가상 스레드 적용 전 점검: 블로킹 I/O와 동시성 제한 운영 가이드 |
| 3074 | 2026. 06. 17. | Java 스레드 작업 취소 설계: interrupt, Future, ExecutorService 종료를 제대로 연결하기 |
| 2985 | 2026. 06. 09. | Java 컨테이너 메모리 운영 가이드: 힙, 직접 메모리, GC 로그를 함께 점검하기 |