首页 > 解决方案 > 寻找 drf haystack 查询参数以使用 q 参数命中 solr

问题描述

我正在尝试使用 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"
        ]

我所需要的就是能够像这样查询:

查询 http://127.0.0.1:8000/api/mymodel/search/?q=physician&city=portland。这样这会以参数 q = 医生 fq = city:portland 命中 solr。

q = 医生 fq = 城市:波特兰的预期响应 响应。

收到的响应: fq=city:portland 的结果。

注意text请注意,如果该字段的响应将忽略 solr 中的排名方程 ,我不想查询该字段。

我错过了什么或做错了什么?

-谢谢

标签: pythondrf-haystack

解决方案


推荐阅读