简体   繁体   English

干草堆,SearchQuerySet()。filter不返回任何内容。 (Django +弹性搜索)

[英]Haystack, SearchQuerySet().filter is not returning anything. ( django + elastic search)

my code looks like following. 我的代码如下所示。 here SearchQuerySet().filer is not returning anything. 这里SearchQuerySet()。filer不返回任何内容。

search_indexes.py search_indexes.py

class sample_index(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    books = indexes.CharField(model_attr='books')
    search_tags = indexes.MultiValueField()

    def prepere_tags(self, obj):
        return [tag.tag for tag in obj.seacrh_tags.all()]

    def get_model(self):
        return sample

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

    def load_all_queryset(self):
        return sample.objects.all().select_related()
 model.py 
class tags(models.Model):    
    tag = models.CharField(max_length=4, unique=True, db_index=True)

    def __unicode__(self):
        return unicode(self.tag)

class sample(models.Model):

books = models.CharField(db_index=True, max_length=256, null=False)
search_tags = models.ManyToManyField(tags, db_index=True)

def __unicode__(self):
    return unicode(self.md5sum)

view.py view.py

def search_h(request):

    search_string = request.GET.get('search_string', '')
    values = []

    sqs = SearchQuerySet().filter(search_tags=search_string)

    values = [a.object for a in sqs[0:10]]

    return render(request, "search/indexes/app/test.html", {'values': values})

sample_text.txt sample_text.txt

{{ object.text }}
{% for tag in object.search_tags.all %}
{{ tag.tag }}
{% endfor %}

Here values is a empty list. 这里的值是一个空列表。 even sqs is coming as empty. 甚至平方成空。 Any idea what am i missing here. 不知道我在这里想念什么。

You have defined following field in index search_tags = indexes.MultiValueField() . 您已在索引search_tags = indexes.MultiValueField()定义了以下字段。 But you are preparing a MultiValueField tags ( prepare_tags ) which does not exist in index, it should be prepare_search_tags : 但是您正在准备索引中不存在的MultiValueField tagsprepare_tags ),它应该是prepare_search_tags

def prepare_search_tags(self, obj): return [tag.tag for tag in obj.seacrh_tags.all()]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM