2009-04-10 2 views
3

Lucene을 사용하여 상점 검색 API를 연구 중입니다.Lucene 검색 결과 그룹화 및 카테고리 별 빈도 계산

나는 예를 들어 .... 괄호 안의 주파수와 각시, 주 조합에 대한 매장 검색 결과를 표시해야합니다 :

지금 현재로
Los Angles,CA (450) 
Atlanta,GA (212) 
Boston, MA (78) 
. 
. 
. 

내 검색 결과에서, 7000 개 루씬 문서 주위에 반환 사용자가 "모든 상점보기"라고 말하면 평균입니다. 이 사용 사례에서는 위의 그림과 같이 약 800 개의 고유 한 도시 레코드를 보여줍니다.

나는 HitCollector 클래스의 Collect 메서드를 재정의하고 다음과 같이 벡터를 검색하고 있습니다 :

var vectors = _reader.GetTermFreqVectors(doc); 

가 그럼 난이 컬렉션을 통해 반복하고 각각의 고유 한 도시, 주 조합에 대해 주파수를 계산합니다.

그러나 이것은 매우 성능이 매우 느립니다. Lucene에서 검색 결과를 그룹화하고 빈도를 계산하는 더 좋은 방법이 있습니까? 코드 조각은 .... 내가 어떤 다른 기술/팁을 사용하여 내 루씬 검색 코드를 최적화 할 수 있는지 제안 해주십시오,

또한 읽기

덕분에 매우 도움이 될 것입니다!

난 당신이 현재 루씬이 OOTB을 할 수 있다고 생각하지 않습니다

답변

3

-이 기능 수익률이 개방 문제를 찾고있다 - 페이스 팅 기능을 제공

Jira Lucene Feature Request

하는 기능 그러나 SOLR에 존재하는 OOTB입니다 .

http://localhost:8983/solr/select?q=ipod&rows=0&facet=true&facet.limit=-1&facet.field=cat&facet.field=inStock

는 다음과 같은 결과를 반환 : 다음과 같은 쿼리

페이스 팅에

자세한 정보는 SOLR의 웹 사이트에서 찾을 수 있습니다

<response> 
<responseHeader><status>0</status><QTime>2</QTime></responseHeader> 
<result numFound="4" start="0"/> 
<lst name="facet_counts"> 
<lst name="facet_queries"/> 
<lst name="facet_fields"> 
    <lst name="cat"> 
     <int name="search">0</int> 
     <int name="memory">0</int> 
     <int name="graphics">0</int> 
     <int name="card">0</int> 
     <int name="music">1</int> 
     <int name="software">0</int> 
     <int name="electronics">3</int> 
     <int name="copier">0</int> 
     <int name="multifunction">0</int> 
     <int name="camera">0</int> 
     <int name="connector">2</int> 
     <int name="hard">0</int> 
     <int name="scanner">0</int> 
     <int name="monitor">0</int> 
     <int name="drive">0</int> 
     <int name="printer">0</int> 
    </lst> 
    <lst name="inStock"> 
     <int name="false">3</int> 
     <int name="true">1</int> 
    </lst> 
</lst> 
</lst> 
</response> 
:

http://wiki.apache.org/solr/SimpleFacetParameters

편집 : 확실히 아래로 가고 싶지 않다면 당신이 루씬에 대한 설명이 패치의 기능을 활용할 수 있습니다 패 시팅 (faceting)에 SOLR의 aproach : 패치를 통해 루씬 2.0의 상단에있는 패 시팅 기능의 구현을 제공

http://sujitpal.blogspot.com/2007/01/faceted-searching-with-lucene.html

.

+0

답변 해 주실 수 있습니까? http://stackoverflow.com/questions/899542/problem-using-same-instance-of-indexsearcher-for-multiple-requests –

0

"그룹화"의 의미를 이해하지 못했지만 각 카테고리의 문서 수를 계산하려면 this question을 살펴보아야합니다. 여전히 서

내 대답은 힘든 아무도

0

스티브, 당신이 faceted search을 할 생각 ... 저를 upvote에 충분히 그것을 좋아하는 것 같았다. 그것은 Lucene과 함께 상자 밖으로 나오지 않습니다. SOLR을 사용하시는 것이 좋습니다, 그게 faceting 주요하고 편리한 기능으로.

+0

답변 해 주실 수 있습니까? http://stackoverflow.com/questions/899542/problem-using-same-instance-of-indexsearcher-for-multiple-requests –