드디어 솔라 관련 추가 개발이 마무리되었다.
사실 큰 개발건도 아니었지만 개발하면서 검색엔진에 대해 조금은 공부해 볼 수 있었던 기회같았다.
0. 생각 정리
내가 해야하는 개발은 검색어를 형태소 분석을 하지않고 검색어 전체를 이용한 검색이 가능하도록 구현하는 것이었다.
기본적으로 SOLR 는 Schema.xml 파일이나 conf 설정을 따로 가지고있었다.
field 를 따로 생성하고 그 field 별로 fieldType 을 설정해주면 해당 타입에 맞게 규칙들이 적용된다고 생각하면 쉬울 것 같다.
1. 방법 정리
형태소 분석을 하려면 "text_ko" 라는 타입을 사용하면되는데 ,
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KoreanTokenizerFactory"
decompoundMode="mixed"
outputUnknownUnigrams="false"
userDictionary="../../dic/coined.txt"
userDictionaryEncoding="UTF-8"
/>
<filter class="solr.KoreanPartOfSpeechStopFilterFactory"
tags="E, J, IC, MAG, MAJ, NA, SC, SE, SH, SP, SSC, SSO, UNA, UNKNOWN, VCP, VCN, VSV, XPN, XSA, XSV, SY, VA, VV, VX" />
<filter class="solr.KoreanReadingFormFilterFactory" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="../../dic/synonym.txt" ignoreCase="true" expand="true"/>
<filter class="solr.UpperCaseFilterFactory" />
</analyzer>
</fieldType>
이렇게 fieldType name 을 "text_ko" 로 주고 filter 를 이용해서 원하는 규칙들을 설정할 수 있다.
하지만 나는 이렇게 분석되기 때문에 생기는 문제점이었기에, text_ko Type를 사용하지 않고 다른 타입을 사용하도록 설정하였다.
나는 "solr.KoreanTokenizerFactory" 처럼 토큰을 나눠서 저장하는 것이 아닌 키워드 자체를 토큰화 시켜주는
"solr.KeywordTokenizerFactory"
를 사용하여 새로운 fieldType 을 만들었다.
<fieldType name="text_ko_no_analysis" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.UpperCaseFilterFactory"/>
</analyzer>
</fieldType>
이렇게 추가를 해준 후 해당 field 로 설정을 해주면 된다.
2. solr admin 페이지 확인
설정을 해준 후 잘 설정되었는지 확인하려면 solr 재기동과 혹시모르니 인덱싱 작업을 다시 해준 후 확인하면 된다!
저번에 말했던 solr admin 페이지에서 인덱싱이 어떻게되나 확인을해보면 된다.
우선 text_ko 타입으로 형태소 분석을 해보았더니 "형태소분석기" 라는 검색어가 "형태소" "형태" "소" "분석기" "분석" "기" 로 분석되는 것을 볼 수 있다.
그러면 추가해본 fieldType 으로 분석을 해보면
같은 검색어인 "형태소분석기" 가 "형태소분석기" 그대로 들어가는 것을 볼 수 있다!
'실무관련' 카테고리의 다른 글
[Linux] 명령어 - 7일이내 변경된 파일 찾기 (1) | 2023.12.11 |
---|---|
[ SOLR ] 검색어 맞춤 검색 방법 (0) | 2023.08.10 |
[ SOLR ] 솔라 검색 역색인 (Inverted Index) (0) | 2023.08.01 |
[ DB ] 관계형 데이터베이스 RDBMS (0) | 2023.08.01 |
[ SOLR ] 솔라 검색 (0) | 2023.08.01 |