2009-04-10 13 views
3

Luceneを使用して店舗検索APIを開発しています。Lucene検索結果をグループ化し、カテゴリ別に頻度を計算する

私は例えば....括弧内にその周波数の各都市、州の組み合わせのための店の検索結果を表示する必要があります。今のよう

Los Angles,CA (450) 
Atlanta,GA (212) 
Boston, MA (78) 
. 
. 
. 

、私の検索結果は上、7000のLuceneのドキュメントの周りに戻りますユーザーが「私にすべての店舗を見せてください」と言う場合は平均です。 このユースケースでは、上に示したように、約800のユニークなCity、Stateレコードを表示してしまいます。

私はHitCollectorクラスのCollectメソッドをオーバーライドし、次のようにベクトルを取得しています:

var vectors = _reader.GetTermFreqVectors(doc); 

そこで私は、このコレクションを反復処理し、それぞれのユニークな都市、州の組み合わせのための周波数を計算します。

しかし、これはパフォーマンスが非常に遅くなっています...検索結果をグループ化してLuceneの頻度を計算する方法はありますか? コードスニペットは....私は、他の技術/ヒントを使用して、私のLucene検索コードを最適化することができれば提案してください、

また読書のための

おかげで非常に参考になります!

答えて

3

私はあなたが現在のLuceneでこのOOTBを行うことができると信じていません - この機能利回りのために、この未解決の問題を検索:

Jira Lucene Feature Request

機能がしかしSolrの持つ存在OOTBある - ファセットの機能を提供します。次のようなクエリ:ファセットの詳細については、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

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

は、次の結果を返します編集:あなたが間違いなくダウンしたくない場合あなたはLuceneのために説明し、このパッチで機能を利用することができるかもしれファセッティングにSOLRのaproach:パッチ経由のLucene 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 –

関連する問題