Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DAISY-Search
Search
Sunghyouk Bae
June 10, 2013
Programming
0
74
DAISY-Search
Search Server by Lucene, Hibernate-Search, Hibernate-OGM, Korean Analyzer
Sunghyouk Bae
June 10, 2013
Tweet
Share
More Decks by Sunghyouk Bae
See All by Sunghyouk Bae
Requery overview
debop
0
37
Reactive Programming with RxJava
debop
0
48
Kotlin @ Coupang Backend 2017
debop
1
580
Hibernate-OGM Overview v 1.0
debop
2
2.2k
Other Decks in Programming
See All in Programming
Beyond ORM
77web
11
1.6k
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
210
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
440
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
3
2.7k
선언형 UI에서의 상태관리
l2hyunwoo
0
270
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
170
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
940
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
Azure AI Foundryのご紹介
qt_luigi
1
210
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
1.4k
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
Flatt Security XSS Challenge 解答・解説
flatt_security
0
730
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
A Tale of Four Properties
chriscoyier
157
23k
Gamification - CAS2011
davidbonilla
80
5.1k
Building Applications with DynamoDB
mza
93
6.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
How STYLIGHT went responsive
nonsquared
96
5.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
DAISY-SEARCH ࣗѐ KTH / @debop68 2013.05 13֙ 5ਘ 22ੌ ࣻਃੌ
DAISY-SEARCH 란 Lucene 기반의 검색서비스 한글형태소 분석기를 사용합니다. (n-gram 사용도
가능) 파일이 아닌 NoSql 기반의 저장소를 사용합니다. Crawler 는 미포함 Avro와Netty를 이용한 API 13֙ 5ਘ 22ੌ ࣻਃੌ
DAISY-SEARCH 구성도 MongoDB Lucene hibernate-ogm (object/grid mapping) hibernate-search DAISY-SEARCH SERVER
avro REST hibernate-orm 13֙ 5ਘ 22ੌ ࣻਃੌ
DAISY-SEARCH 특징 hibernate-ogm 채택 컨텐츠 저장소 및 인덱스 저장소로 MongoDB,
Infinispan, EhCache 사용 가능 향후 Redis, Couchbase 용 provider 개발 중 Index 정보를 엔티티별 생성 Index Sharding 제공 (비동기 방식, Indexing 속도 향상) 13֙ 5ਘ 22ੌ ࣻਃੌ
한글 형태소 분석기 https://github.com/debop/debop4j debop4j-search 모듈 이수명님의 한글 형태소 분석기
fork (thread-safe 하게 변경) 꼬꼬마 한글 형태소 분석기 사전 추가 동의어 사전 추가 (사용처에 맞게 계속 관리 필요) 13֙ 5ਘ 22ੌ ࣻਃੌ
Search API ݫࣗ٘ݺ ࢸݺ ping 서버와의 통신이 가능한지 시험합니다 search
검색을 수행합니다. (paging) searchId 검색을 수행합니다. 단 Id만 반환합니다. persist 컨텐츠를 저장합니다 (인덱싱과 원본을 저장합니다.) persistAll 다량의 컨텐츠를 저장합니다. delete 컨텐츠를 삭제합니다. deleteOlderEntities 특정시각 이전의 컨텐츠를 삭제합니다. indexOptimize 인덱스 정보를 최적화합니다 indexAll 모든 인덱스를 삭제하고 재생성합니다. clearAll 컨텐츠와 인덱스 모두를 삭제합니다. 13֙ 5ਘ 22ੌ ࣻਃੌ
Examples - persist // persist entities Entity entity = getEntity(TEST_ROW_ID);
assertThat(client.persist(entity)).isTrue(); List<Entity> entities = new ArrayList<Entity>(); for (int i = 0; i < 100; i++) { Entity row = getEntity("ROW-ID-" + i); row.setAttrs(new HashMap<CharSequence, CharSequence>()); entities.add(row); } client.persistAll(entities); 13֙ 5ਘ 22ੌ ࣻਃੌ
Examples - search // TEXTী “Ҋё” Ҋ, ݫఋؘఠ “SRਬഋ” =
“ࠛ݅” ੋ ஶబஎ Ѩ࢝ // HashMap<String, String> map = new HashMap<String, String>(); map.put("SRਬഋ", "ࠛ݅"); SearchResult result = client.search("Ҋё", map, 1, 10); 13֙ 5ਘ 22ੌ ࣻਃੌ