한글 검색기 구현
🙈

한글 검색기 구현

Created
May 21, 2024 03:31 AM
Last edited time
Last updated May 22, 2024
Tags
ElasticSearch
Language
URL

Intro::

한글 검색기를 구현해보는 예제입니다.
해당 플러그인을 사용한 구현입니다.

코드

템플릿 생성

PUT /_index_template/total_search_template { "index_patterns": ["total_search_*"], "template": { "settings": { "index.max_ngram_diff": 19, "analysis": { "filter": { "ngram_filter": { "type": "ngram", "min_gram": 1, "max_gram": 20 } }, "tokenizer": { "my_nori_tokenizer": { "type": "nori_tokenizer", "decompound_mode": "mixed" } }, "analyzer": { "jamo_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "hanhinsam_jamo" ] }, "ngram_jamo_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "hanhinsam_jamo", "ngram_filter" ] }, "chosung_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "hanhinsam_chosung" ] }, "engtohan_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "hanhinsam_engtohan" ] }, "hantoeng_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "hanhinsam_hantoeng" ] }, "nori_analyzer": { "type": "custom", "tokenizer": "my_nori_tokenizer" } } } }, "mappings": { "properties": { "name": { "type": "keyword", "copy_to": ["name_jamo", "name_hantoeng", "name_engtohan", "name_chosung", "name_ngram", "name_nori"] }, "name_jamo": { "type": "text", "analyzer": "jamo_analyzer" }, "name_hantoeng": { "type": "text", "search_analyzer": "hantoeng_analyzer" }, "name_engtohan": { "type": "text", "search_analyzer": "standard" }, "name_chosung": { "type": "text", "analyzer": "chosung_analyzer" }, "name_ngram": { "type": "text", "analyzer": "ngram_jamo_analyzer", "search_analyzer": "jamo_analyzer" }, "name_nori": { "type": "text", "analyzer": "nori_analyzer" } } } }, "priority": 100 }

인덱스 생성 및 확인

PUT total_search_1 GET total_search_1/_settings
 
 

References::

Loading Comments...