gpt4 book ai didi

django - 我不明白从 elasticsearch/haystack 返回的结果

转载 作者:行者123 更新时间:2023-11-29 02:44:43 25 4
gpt4 key购买 nike

使用 elasticsearch 后端从 haystack 返回的结果对我来说似乎是错误的。我的搜索索引如下:

from haystack import indexes
from .models import IosVideo

class VideoIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
absolute_url = indexes.CharField(model_attr='get_absolute_url')
# content_auto = indexes.EdgeNgramField(model_attr='title')
description = indexes.CharField(model_attr='description')
# thumbnail = indexes.CharField(model_attr='thumbnail_url', null=True)

def get_model(self):
return IosVideo

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

我的文本文件看起来像:

{{ object.title }}
{{ object.text }}
{{ object.description }}

我的查询是

SearchQuerySet().models(IosVideo).filter(content="darby")[0]

返回的结果让我觉得这不起作用是一个具有以下特征的视频对象

title: u'Cindy Daniels'
description: u'',
text: u'Cindy Daniels\n\n\n',
absolute_url: u'/videos/testimonial/cindy-daniels/'

为什么查询会返回这样的结果?我很困惑。

我目前的理论是,它将查询中字符的每个子集标记化,并将其用作部分匹配。有没有办法降低这种容忍度以使其更接近匹配。

我的点数信息是 elasticsearch==1.2.0 django-haystack==2.3.1

并且elasticsearch版本号是1.3.1

此外,当我使用 http://localhost:9200/haystack/_search/?q=darby&pretty

它返回 10 个结果。

SearchQuerySet().filter(content="darby")  

返回 4k 结果。

有谁知道什么会导致这种行为?

最佳答案

django-haystack 2.1.0 的 Charfield 索引上的 filter() 方法存在问题。您可以将它们更改为 NgramField,例如 text = indexes.NgramField(document=True, template_name=True)

问题是,当您使用这种组合时,您只会得到第一个字符。因此它会返回所有在文本索引字段中包含“d”的匹配项。

关于django - 我不明白从 elasticsearch/haystack 返回的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28888243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com