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 | 31 |
Tags
- Web Service
- SpringSource Tool Suite
- MANTIS
- Bootstrap
- varags
- C#
- 이클립스
- 웹뷰
- 자바
- 자바스크립트
- MS-SQL
- Java
- html
- javascript
- Maven
- Android
- Apache Lucene
- jsp
- decompiler
- STS
- TextBox
- 안드로이드
- Redirect
- scrollView
- asp.net
- Eclipse
- 웹 서비스
- WebView
- 컬럼명
- MSsql
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;
}