首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用drf-haystack searchindex和elasticsearch在多个模型上进行搜索(过滤)

使用drf-haystack searchindex和elasticsearch在多个模型上进行搜索(过滤)
EN

Stack Overflow用户
提问于 2017-03-18 16:27:56
回答 1查看 250关注 0票数 2

我一直在尝试使用rdf-haystack过滤器实现多个模型,但不起作用。下面是我的示例:我有两个模型search_indexes.py

代码语言:javascript
复制
class PersonSkillIndex(indexes.SearchIndex, indexes.Indexable):
   text = indexes.CharField(document=True, use_template=True)
   person_name = indexes.CharField(model_attr='person_id')
   skill_name = indexes.EdgeNgramField(model_attr='skill_id')

   autocomplete = indexes.EdgeNgramField()
   @staticmethod

   def prepare_autocomplete(obj):
   return " ".join((obj.skill_id.name)) 

   def get_model(self):
   return PersonSkill

   def index_queryset(self, using=None):
   return self.get_model().objects.all()

   def prepare_person_id(self, obj):
   return obj.person_id.name

   def prepare_skill_id(self, obj):
   return obj.skill_id.name

class PersonPositionIndex(indexes.SearchIndex, indexes.Indexable):
   text = indexes.CharField(document=True, use_template=True)
   person_name = indexes.CharField(model_attr='person_id')
   position_name = indexes.EdgeNgramField(model_attr='position_id')
   autocomplete = indexes.EdgeNgramField()

   @staticmethod
   def prepare_autocomplete(obj):
   return " ".join(( obj.position_id.title)) 

   def get_model(self):
   return PersonPosition 

   def index_queryset(self, using=None):
   return self.get_model().objects.all()

   def prepare_person_id(self, obj):
   return obj.person_id.name

   def prepare_position_id(self, obj):
   return obj.position_id.name

我想用以下searchQuerySet搜索PersonSkill和PersonPosition机型:

代码语言:javascript
复制
http://localhost:8000/en/api/profiles/search/?skill_name=python&position_name=programmer

Haytack过滤器是否支持此功能?如果有任何建议,欢迎!谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 15:40:26

请通过

http://drf-haystack.readthedocs.io/en/latest/09_multiple_indexes.html

这篇文章描述了一种类似于你正在寻找的方式。

基本上,您可以在“index_classes”属性中指定一个索引列表。

当您的搜索引擎已经为多个模型编制了索引,并且您希望提供其中两个或更多模型的聚合结果时,这会很有用。要使用默认的多索引支持,只需在index_classes列表中添加多个索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42872131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档