728x90
반응형
더 나은 검색을 위해 검색어 자동 완성 필터를 적용하는 방법
*자세한 설명 생략
*이전 과정 아래 관련 글 참고
▷ 결과 미리 보기
*설정 후 몇몇 검색이 잘 안 되는 것들도 보인다. Nori Tokenizer가 한국어를 어떻게 분할하는지 등등 더 나은 검색을 위해 많은 연구가 필요
▷ 설정 전
* test2 Index 설정 값(기본 설정)
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"memo": {
"type": "text"
},
"keywords": {
"type": "keyword"
}
}
}
}
▷ 한글 형태소 분석기 설치(Nori)
*한국어를 분할하기 위해 Nori Tokenizer를 사용하기 때문에 설치
💡./bin/opensearch-plugin install analysis-nori
💡ls -l plugins/
▷ 자동 완성 설정
*기존 인덱스 삭제
💡curl -XDELETE -ku admin:TestUser2@ "https://localhost:9200/test2"
[인덱스 설정]
{
"settings": {
"index": {
"analysis": { // 분석 설정
"filter": { // 필터 설정
"test_autocomplete": { // 필터 사용자 정의
"type": "edge_ngram", // 검색어 자동 완성이나 부분 일치 검색을 위해 사용
"min_gram": 2, // 최소 길이
"max_gram": 20 // 최대 길이
}
},
"analyzer": { // 분석기 설정
"nori_analyzer": { // 분석기 사용자 정의
"type": "custom", // 커스텀 분석기 타입
"tokenizer": "nori_tokenizer", // Nori Tokenizer 사용 (한국어용)
"filter": [ // 필터 목록
"test_autocomplete", // 위에서 정의한 edge_ngram 필터 사용
"lowercase" // 대소문자 구분 없이 검색
]
}
}
}
}
},
"mappings": {
"properties": {
"memo": {
"type": "text",
"analyzer": "nori_analyzer" // "nori_analyzer" 분석기 적용
},
"keywords": {
"type": "keyword" // 정적인 텍스트를 저장(분석X)
}
}
}
}
*Index 생성
💡curl -XPUT -ku admin:TestUser2@ "https://localhost:9200/test2" -H "Content-Type: application/json" -d "{\"settings\":{\"index\":{\"analysis\":{\"filter\":{\"test_autocomplete\":{\"type\":\"edge_ngram\",\"min_gram\":2,\"max_gram\":20}},\"analyzer\":{\"nori_analyzer\":{\"type\":\"custom\",\"tokenizer\":\"nori_tokenizer\",\"filter\":[\"test_autocomplete\",\"lowercase\"]}}}}},\"mappings\":{\"properties\":{\"memo\":{\"type\":\"text\",\"analyzer\":\"nori_analyzer\"},\"keywords\":{\"type\":\"keyword\"}}}}"
*_bulk
💡curl -XPOST -ku admin:TestUser2@ "https://localhost:9200/test2/_bulk" -H "Content-Type: application/json" --data-binary "@C:\Users\JH\Desktop\SampleData.json"
▷ 결과 확인
▷ 관련 글
728x90
728x90
'▶ Back-End > Server' 카테고리의 다른 글
Nginx Compression Gzip 설정 (0) | 2024.06.27 |
---|---|
Tomcat Compression Gzip 설정 (0) | 2024.06.25 |
OpenSearch Dashboard Index Patterns 생성 (0) | 2024.05.20 |
OpenSearch 기초 예제 - 데이터 추가(_bulk) (0) | 2024.05.20 |
OpenSearch 기초 예제 - Index 생성/삭제 (0) | 2024.05.20 |
댓글