2

データをドリルダウンするためのファセット オプションが表示された検索結果があります。ファセットが選択されると、ファセットの結果が変更されます。したがって、最初に「場所 (10)」、「画像 (5)」、「人 (3)」、および「すべて (18)」をファセット オプションとして表示していて、画像をクリックすると、すべての検索結果が変わったとしても、他の人もそうです。これを行う良い方法はありますか?

4

2 に答える 2

7

私はこれを行ったばかりで、元の検索クエリを再実行しなくても、実際にはかなり達成可能です。元のファセットを保存するには、セッションを使用するだけです。

これが私の実際の作業コードです:

from haystack.views import FacetedSearchView

class StickyFacetedSearchView (FacetedSearchView):

    def top_level_facets(self):
        """
        When selecting a facet to drill down the results, 
        we need to keep the top level facet counts
        """
        stored_query = self.request.session.get('query', None)

        if stored_query != self.query:
            self.request.session['query'] = self.query
            self.request.session['facet_counts'] = self.results.facet_counts()

        return self.request.session['facet_counts'] # Fail loudly

    def extra_context(self):
        """ add base_facets to extra_context"""
        extra = super(StickyFacetedSearchView, self).extra_context()
        extra['base_facets'] = self.top_level_facets()
        return extra

上記のビューを「mysearch」などのアプリに貼り付けてから、FacetedSearchView の代わりに urls.py で mysearch.StickyFacetedSearchView を使用します。

それらにアクセスするには、ファセットではなく、テンプレートで base_facets を使用します。

それは完全に機能します。

于 2011-09-12T05:17:56.567 に答える
1

私もこれで問題に遭遇しました。私たちが見つけた唯一の答えは、最上位のファセット結果を取得するためにドリルダウンせずに毎回クエリを再実行することでした。

于 2011-08-01T06:12:50.060 に答える