Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DAISY-Search

 DAISY-Search

Search Server by Lucene, Hibernate-Search, Hibernate-OGM, Korean Analyzer

Sunghyouk Bae

June 10, 2013
Tweet

More Decks by Sunghyouk Bae

Other Decks in Programming

Transcript

  1. DAISY-SEARCH 란 Lucene 기반의 검색서비스 한글형태소 분석기를 사용합니다. (n-gram 사용도

    가능) 파일이 아닌 NoSql 기반의 저장소를 사용합니다. Crawler 는 미포함 Avro와Netty를 이용한 API 13֙ 5ਘ 22ੌ ࣻਃੌ
  2. DAISY-SEARCH 특징 hibernate-ogm 채택 컨텐츠 저장소 및 인덱스 저장소로 MongoDB,

    Infinispan, EhCache 사용 가능 향후 Redis, Couchbase 용 provider 개발 중 Index 정보를 엔티티별 생성 Index Sharding 제공 (비동기 방식, Indexing 속도 향상) 13֙ 5ਘ 22ੌ ࣻਃੌ
  3. 한글 형태소 분석기 https://github.com/debop/debop4j debop4j-search 모듈 이수명님의 한글 형태소 분석기

    fork (thread-safe 하게 변경) 꼬꼬마 한글 형태소 분석기 사전 추가 동의어 사전 추가 (사용처에 맞게 계속 관리 필요) 13֙ 5ਘ 22ੌ ࣻਃੌ
  4. Search API ݫࣗ٘ݺ ࢸݺ ping 서버와의 통신이 가능한지 시험합니다 search

    검색을 수행합니다. (paging) searchId 검색을 수행합니다. 단 Id만 반환합니다. persist 컨텐츠를 저장합니다 (인덱싱과 원본을 저장합니다.) persistAll 다량의 컨텐츠를 저장합니다. delete 컨텐츠를 삭제합니다. deleteOlderEntities 특정시각 이전의 컨텐츠를 삭제합니다. indexOptimize 인덱스 정보를 최적화합니다 indexAll 모든 인덱스를 삭제하고 재생성합니다. clearAll 컨텐츠와 인덱스 모두를 삭제합니다. 13֙ 5ਘ 22ੌ ࣻਃੌ
  5. 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ੌ ࣻਃੌ
  6. 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ੌ ࣻਃੌ