Lucene Index 2 8 Indexting Test java 3

  • Slides: 33
Download presentation

Lucene

Lucene

색인(Index)

색인(Index)

2 -8 예제 * 내용 - Indexting. Test. java 참조

2 -8 예제 * 내용 - Indexting. Test. java 참조

3 -1 Index. Searcher * 내용 - Index. Searcher 클래스는 색인을 읽기 전용으로 열어

3 -1 Index. Searcher * 내용 - Index. Searcher 클래스는 색인을 읽기 전용으로 열어 사용한다. - 검색 메소드는 Query 객체와 결과로 받을 문서의 개수 top. N을 인자로 지정하고 Top. Docs 객체를 결과로 넘 겨 받는다. - Index. Reader 인스턴스를 새로 만들때 자원을 많이 소모한다. 따라서 가능한 대로 Index. Reader를 최대한 재 사용해야 하며, index. Reader 를 새로 만드는 일은 최소화해야 한다. Directory dir = FSDirectory. open(new File(“/tmp/index”)); Index. Searcher searcher = new Index. Searcher(dir); Query q = new Term. Query(new Term(“contents”, “lucene”)); Top. Docs hits = searcher. search(q, 10); Searcher. close(); Index. Reader new. Reader = reader. reopen(); Query Index. Searcher Index. Reader Directory 색인 Top. Docs

3 -1 Query. Parser 검색어 파싱 * 내용 - 사용자가 입력한 ‘mock OR junit’

3 -1 Query. Parser 검색어 파싱 * 내용 - 사용자가 입력한 ‘mock OR junit’ 같은 텍스트 질의를 분석해 동일한 의미의 Query 객체로 변환한다는 뜻이 다. mock OR junit’ 검색어를 Query. Paser로 파싱하면 두개의 텀 질의를 담고 있는 하나의 질의 결과를 얻게 된다. Query 객체 검색어 Query. Parser Index. Searcher 분석된 개별언어 Analyzer - Query. Parser 를 통해 사용자가 입력한 텍스트 형태의 검색어를 루씬에서 인식하는 Query 객체로 변환한다. Query. Parser parser = new Query. Parser(Version. LUCENE_30, “contents”, new Simple. Analyzer()); Query query 1 = parser. parse(“+JUNIT +ANT -MOCK”); Query query 2 = parser. parse(“mock OR junit”); Top. Docs doc = searcher. search(query 1, 10); Top. Docs doc = searcher. search(query 2, 10);

3 -1 다양한 종류의 질의 * 내용 - Boolean. Query : 다양한 종류의 질의는

3 -1 다양한 종류의 질의 * 내용 - Boolean. Query : 다양한 종류의 질의는 모두 Boolean. Query를 통해 복잡한 형태로 묶어 사용할 수 있다. Boolean. Query 안에 들어가는 각 질의는 절이라고 부른다. Term. Query searching. Books = new Term. Query(new Term("subject", "search")); Query books 2010 = Numeric. Range. Query. new. Int. Range("pubmonth", 201001, 201012, true); Boolean. Query searching. Books 2010 = new Boolean. Query(); searching. Books 2010. add(searching. Books, Boolean. Clause. Occur. MUST); searching. Books 2010. add(books 2010, Boolean. Clause. Occur. MUST); /* Boolean. Clause. Occur. MUST : 지정한 질의만 검색 * Boolean. Clause. Occur. SHOULD : 지정한 질의는 해당하면 좋고, 해당하지 않더라도 다른조건에 맞는다면 검색 * Boolean. Clause. Occur. MUST_NOT : 지정한 질의에 해당하는 문서는 제외하고 검색 */ - Wildcard. Query : 단어를 완벽히 모르는 상태에서 검색을 가능케 한다. ‘*’ 와일드 카드는 글자가 없거나 하나 이상의 여러 글자에 대응하고, ‘? ’ 와일드카드는 글자가 없거나 아니면 하나에 해당한다. 접두어로 와일드 카 드를 사용하면 색인의 모든 텀을 조회해야 하기 때문에 서능이 떨어진다. Query query = new Wildcard. Query(new Term(“contents”, “? ild*”)); Top. Docs docs = search(query, 100);

참고자료 * 내용 참고자료 관련링크 - http: //lucene. apache. org/ - http: //www. acornpub.

참고자료 * 내용 참고자료 관련링크 - http: //lucene. apache. org/ - http: //www. acornpub. co. kr/book/lucene-2 nd - http: //www. itworld. co. kr/news/78212 - http: //cafe. naver. com/korlucene