Django Haystack精确查询不按预期运行

时间:2014-09-16 20:01:23

标签: python django django-haystack whoosh

我正在使用django haystack的完全匹配(使用Whoosh)来过滤并获得意想不到的结果。

search_index.py

class AssetIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)        
    asset_type = indexes.CharField(model_attr='asset_type')        
    brand = indexes.CharField(model_attr='brand')

    def prepare_brand(self, obj):
          return obj.brand.name

    def index_queryset(self, using=None):
          """Used when the entire index for model is updated."""
          return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())

views.py

    assets = SearchQuerySet().models(Asset)
    assets = assets.filter(
                    content=query, asset_type=Exact('brand_asset'))
    assets = assets.filter(brand=Exact(b.name))

我希望以上搜索方式如下:按query搜索,asset_type等于brand_assetbrandb.name。所以一切都和你在一起。

实际上brand并不准确。如果我选择Kraft或Kraft Mac n Cheese,我会得到相同的结果,即使这是两个不同的品牌。

TLDR - 我的搜索不仅限于搜索索引文件中的brand字段。

更新

我也可以使用Elasticsearch获得相同的结果。

0 个答案:

没有答案