메뉴 건너뛰기

2016.12.08 01:37

solr적용시 사용법

조회 수 5582 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

우선 형태소 분석기를 다운로드 하신 다음에

이클립스에서 프로젝트 추가 하신후

KoreanFilterFactory, KoreanTokenizerFactory 이 두개의 클래스를 추가 하시면 됩니다.

추가를 하시면 BaseTokenFilterFactory, BaseTokenizerFactory 이 두개의 클래스가 없기 때문에 오류가 발생을 한 것인데 solr lib를 require project로 잡으셔도 되고 lib를 받아서 빌드패스에 잡으시고 빌드를 하시면 됩니다.

package org.apache.lucene.analysis.kr;

import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.analysis.BaseTokenFilterFactory;

public class KoreanFilterFactory extends BaseTokenFilterFactory {
public KoreanFilter create(TokenStream input) {
return new KoreanFilter(input);
}
}

package org.apache.lucene.analysis.kr;

import java.io.Reader;

import org.apache.solr.analysis.BaseTokenizerFactory;


public class KoreanTokenizerFactory extends BaseTokenizerFactory {
public KoreanTokenizer create(Reader input) {
return new KoreanTokenizer(input);
}

}

빌드 후 koreananalizer.jar로 저장 한 후. was의 lib 경로에 넣습니다.

example로 들어있는 jetty에서는 lib를 어디에 넣어야 할지를 몰라서

한참을 해메다가 work/WEB-INF/lib에 넣었더니 동작을 하더군요

schema.xml에 text필드를 아래와 같이 수정합니다.

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<!-- <tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>

기존의 solr.WhitespaceTokenizerFactory를 주석 처리 하고 새로 생성한 KoreanTokenizerFactory를 tokenizer class로 넣었습니다.

제가 환경이 되면 검색하는 모습도 보여드리고 싶은데 환경이 안되는군요

ps. 한글 검색 시에는 http://localhost:8983/solr/admin/ 에서 검색 하셔야 합니다. tutorial에서 나오는 것 같이 url에 q값에 한글을 넣으면 오류를 발생합니다


List of Articles
번호 제목 날짜 조회 수
38 쿠팡 api 프로젝트 / 적용 테스트 (스프링 부트 / 자바 ) file 2021.03.29 567
37 쿠키와 세션을 이용한 자동 로그인 처리 file 2018.07.04 8979
36 자바 스프링프레임워크 개발환경 설정하기-2편 file 2016.08.18 6490
35 자바 스프링프레임워크 개발환경 설정하기-1편 file 2016.08.18 6840
34 자바 스프링, spring AOP 구현 (xml 방식) file 2016.08.18 6200
33 자바 스프링, spring AOP 구현 (xml 방식) file 2016.08.18 5892
32 스프링을 구성하는 코어 모듈 - core module file 2016.12.08 5119
31 스프링에서 구글맵 연동하기 2018.07.04 4599
30 스프링과 안드로이드 연동5 : (Javascript에서 Android 함수 호출하기) 2018.07.04 3390
29 스프링과 안드로이드 연동4 : (JSON으로 가져오기) file 2018.07.04 5530
28 스프링과 안드로이드 연동3 : ( 서버에서 XML로 반환해 가져오기 ) 2018.07.04 2896
27 스프링과 안드로이드 연동2 : 서버에서 안드로이드로 이미지 가져오기(다운) 2018.07.04 3319
26 스프링과 안드로이드 연동1(Html 소스 가져오기) 2018.07.04 2676
25 스프링, MySQL, MyBatis 연동 - 데이터 조회하기 file 2021.05.06 793
24 스프링, MySQL, MyBatis 연동 file 2021.05.06 128
23 스프링(spring) 메일 발송 :: mailSender 2016.08.18 14879
22 스프링 프로젝트 생성 후 샘플 코드 한글 깨짐 현상 file 2021.03.31 186
21 스프링 외부 경로 폴더 지정하기 2018.07.04 4618
20 스프링 XML 설정에서 자바 설정 Import하기 file 2016.08.18 5071
19 스프링 Bean 객체의 초기화 및 소멸시 호출 메서드 file 2016.08.18 4996
Board Pagination Prev 1 2 Next
/ 2

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved