我正在尝试使用drf haystack来创建一个用于查询solr的api。
下面是我正在使用的类
from api.serializers import MyModelSerializer
class MyModelSearchView(HaystackViewSet):
index_models = [MyModel]
serializer_class = MyModelSerializer
document_uid_field = "key"
class MyModel(models.Model):
key = models.TextField(primary_key=True)
title = models.TextField(blank=True, null=True)
city = models.TextField(blank=True, null=True)
category = models.TextField(blank=True, null=True)
subcategory = models.TextField(blank=True, null=True)
class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr="title")
city = indexes.CharField(model_attr="city")
key = indexes.CharField(model_attr="key")
def get_model(self):
return MyModel
def index_queryset(self, using=None):
return self.get_model().objects.all()
from api.search_indexes import MyModelIndex
class MyModelSerializer(HaystackSerializer):
class Meta:
fields = [
“title”, “city”, "pk"
]
我所需要的就是能够像这样进行查询:
queryhttp://127.0.0.1:8000/api/mymodel/search/?q=physician&city=portland. 这样,它就可以通过参数q=医师fq=城市:波特兰来访问solr。
q=医师fq=城市:波特兰的预期响应。
收到的响应:fq=城市:波特兰的结果。
请注意,我不想查询 text
字段,如果来自该字段的响应将忽略solr中的排名方程。
我错过了什么或做错了什么?
-谢谢
暂无答案!
目前还没有任何答案,快来回答吧!