Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MS-SQL
- 컬럼명
- scrollView
- Apache Lucene
- MANTIS
- 웹뷰
- 자바스크립트
- Android
- varags
- 자바
- Redirect
- Java
- asp.net
- jsp
- STS
- 안드로이드
- javascript
- TextBox
- Eclipse
- MSsql
- Maven
- 웹 서비스
- C#
- Bootstrap
- decompiler
- Web Service
- SpringSource Tool Suite
- WebView
- 이클립스
- html
Archives
- Today
- Total
bboks.net™
Apache Lucene에서 KoreanAnalyzer 사용하기 본문
0. 구축환경
Hibernate Core 4.1.8 Final
Hiberante Search 4.2.0.Beta2
- Hibernate 4.1.1.Final 에서는 Verify Exception이 발생1
1. https://github.com/need4spd/lucene-Korean-Analyzer 에서 KoreanAnalyzer 소드 다운
2. 다운 받은 소스를 압축해제
3. 다운 받은 소스를 Eclipse로 import
3.1 Eclipse의 Package Explorer에서 우클릭 Import 선택
3.2 Maven - Exsiting Maven Project - Next
3.3 Root Directory의 Browse를 눌러 압축을 해제한 소스의 위치를 선택 - Finish
3.4 Import가 끝나면 Package Explorer에 luceneKoreanAnalyzer 프로젝트가 생성됨
4. com.tistory.devyongsik.analyzer 패키지의 KoreanAnalyzer 클래스에 Default 생성자 추가
5. KoreanAnalyzer를 사용하고자 하는 프로젝트에 Dependency 추가
6. 클래스의 Analyzer를 KoreanAnalyzer로 지정
@Entity @Table(name = "author") @Indexed @Analyzer(impl = com.tistory.devyongsik.analyzer.KoreanAnalyzer.class) public class Author { private static final long serialVersionUID = 4887864924331295749L; @Id @GeneratedValue @DocumentId private long id; @Field(index = Index.YES, store = Store.YES) private String firstName; @Field(index = Index.YES, store = Store.YES) @Boost(0.2f) private String lastName; //getters and setters }
7. 검색 부분 구현
검색 부분 구현하는 부분은 Hibernate Search Reference를 참고
@SuppressWarnings("unchecked") @Override public List find(String authorName) { Session session = sessionFactory.getCurrentSession(); FullTextSession fullTextSession = Search.getFullTextSession(session); QueryBuilder qb = fullTextSession.getSearchFactory() .buildQueryBuilder().forEntity(Book.class).get(); org.apache.lucene.search.Query query = qb.keyword() .onFields("title", "author.firstName", "author.lastName") .matching(authorName).createQuery(); org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery( query, Book.class); List books = hibQuery.list(); return books; }