Haystack, SearchQuerySet().filter 没有返回任何内容.( 姜戈 + 弹性搜索)



我的代码如下所示。 这里 SearchQuerySet().filer 没有返回任何内容。

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

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

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

这里的值是一个空列表。 甚至 SQS 也是空的。知道我在这里错过了什么。

您在索引 search_tags = indexes.MultiValueField() 中定义了以下字段。但是您正在准备一个索引中不存在的多值字段tagsprepare_tags),它应该prepare_search_tags

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

相关内容

  • 没有找到相关文章

最新更新