elasticsearch,django-haystack,searchqueryset,Python,Django,elasticsearch,Django Haystack,Searchqueryset" /> elasticsearch,django-haystack,searchqueryset,Python,Django,elasticsearch,Django Haystack,Searchqueryset" />

Python Haystack,SearchQuerySet()。筛选器未返回任何内容。(django+弹性搜索)

Python Haystack,SearchQuerySet()。筛选器未返回任何内容。(django+弹性搜索),python,django,elasticsearch,django-haystack,searchqueryset,Python,Django,elasticsearch,Django Haystack,Searchqueryset,我的代码如下所示。此处SearchQuerySet.filer未返回任何内容 search_index.py view.py 示例_text.txt 这里的值是一个空列表。即使是sqs也是空的。知道我在这里遗漏了什么吗。您已经在索引搜索中定义了以下字段\u tags=index.MultiValueField。但您正在准备索引中不存在的多值字段标记prepare_标记,它应该是prepare_search_标记: def准备搜索标记自身,obj: return[tag.tag for tag

我的代码如下所示。此处SearchQuerySet.filer未返回任何内容

search_index.py

view.py

示例_text.txt


这里的值是一个空列表。即使是sqs也是空的。知道我在这里遗漏了什么吗。

您已经在索引搜索中定义了以下字段\u tags=index.MultiValueField。但您正在准备索引中不存在的多值字段标记prepare_标记,它应该是prepare_search_标记:

def准备搜索标记自身,obj: return[tag.tag for tag in obj.seacrh_tags.all]

谢谢阿米尔,我做了那个改变,即使在那之后。。此字段未被索引。您是否在更改后重新生成索引并更新索引?确定最后一次猜测尝试使用查找中的uu作为SearchQuerySet进行筛选。筛选器搜索\u标记\uuuu in=search\u字符串运气不好,标记本身不在索引中。只是标记不在索引中或没有索引?
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)
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})
{{ object.text }}
{% for tag in object.search_tags.all %}
{{ tag.tag }}
{% endfor %}