Django Haystack搜索结果筛选基于SITE_ID?

时间:2014-11-07 16:55:03

标签: python django search django-haystack

如何根据settings.SITE_ID?

过滤搜索结果

我在基于SITE_ID的Haystack搜索结果中遇到问题。我们有多个网站使用一个存储所有内容的数据库,并使用Django的网站框架基于SITE_ID显示数据。

使用Haystack / Woosh进行搜索时,除非我们创建包含SITE_ID过滤器的索引(见下文),否则不会根据SITE_ID过滤结果,但这只会为一个网站的索引编制索引。没有它,它将索引所有数据库值,并在所有网站上返回未过滤的数据。

注意:city_idsite_id的值相同,我们也可以。

 class SiteIndex(indexes.SearchIndex, indexes.Indexable):
      text = indexes.CharField(document=True, use_template=True)
      name = indexes.CharField(model_attr='name', boost=1.5)
      keywords = indexes.CharField(model_attr='keywords')
      about = indexes.CharField(model_attr='about', boost=0.5)
      city_id = indexes.IntegerField(model_attr='city_id')

      content_auto = indexes.EdgeNgramField(model_attr='name')

      def get_model(self):
          return Business

 def index_queryset(self, using=None):
     return self.get_model().objects.filter(city_id=settings.SITE_ID)

0 个答案:

没有答案