본문 바로가기

Lucene

[lucene] 결과내 재검색 구현

결과내 재검색을 구현 어떻게 할까..

상품을 검색 할 때 일단 "나이키"로 검색을 하고

그안에서 다시 3000~10000 원 사이의 상품을 검색한다..

딱 생각나는 것은 두가지 방안인데..

하나는 쿼리를 다시 생성해서 날리는 방법

즉.. NAME:나이키 로 처음 검색 후 재검색 요청이 들어오면 다시

NAME:나이키 +[PRICE 3000 To 10000] 쿼리를 생성해서 날리는 방법..

또 하나는 필터를 이용하는 방법이 있을 것 같다...

TermQuery nikeTerm = new TermQuery(new Term("NAME","나이키"));
ChainedFilter filter = new ChainedFilter(new Filter[] {new RangeFilter("PRICE", NumberTools.longToString(3000), NumberTools.longToString(10000), true, true)}, new int[] {ChainedFilter.AND});
BooleanQuery bq = new BooleanQuery();
bq.add(nikeTerm, BooleanClause.Occur.MUST);

Hits hits = searcher.search(bq, filter, new Sort("PRICE"));
...

(org.apache.lucene.document.NumberTools)

이런 정도가 되면 될까.....

실제적으로 성능에 어느정도의 차이가 나는지 잘 모르겠다..


또 하나 고민되는 것이 그룹핑 기능인데..

카테고리별 검색 결과 갯수 같은거...

이거 어떻게 해야 할지 좀 난감 -_-ㅋ