gpt4 book ai didi

python - 不能使用 haystack 和引擎 Elasticsearch (Django) 与 EdgeNgramField 自动完成

转载 作者:太空狗 更新时间:2023-10-30 00:07:28 26 4
gpt4 key购买 nike

我需要在模型字段中搜索子字符串值。我有一个索引和一个 SearchQuerySet。

这是 Elasticsearch 配置。

HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'haystack',
},

}

我的索引。

class ElementIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)

#model fields
title_element = indexes.EdgeNgramField(model_attr='title')
clean_content = indexes.EdgeNgramField(model_attr='clean_content')
def get_model(self):
return Element

def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return Element.objects.filter(updatetime__lte=datetime.datetime.now())

我的自定义搜索。

SearchQuerySet().filter(title_element=clean_value)

在我的数据库中,我有一个值“HolaMundoTest”,如果我尝试通过“Hola”或“HolaM”进行搜索,我会找到一个结果,但如果我尝试“Mundo”或“mundo”或“laMun”,则有无匹配。

有什么问题吗?我不明白。

来源http://django-haystack.readthedocs.org/en/v2.1.0/autocomplete.html

我正在使用:

  • -django 1.5.1
  • -django-haystack==2.1.0
  • -elasticsearch-0.90.5
  • -pyelasticsearch==0.6

感谢您的回答-

最佳答案

当您使用 EdgeNgramField 时,这是预期的行为,因为它会标记空格并匹配以查询中的字符开头的文本。

为了获得查询“laMun”或“mundo”的结果,您应该使用 NgramField 而不是 EdgeNgramField。

关于python - 不能使用 haystack 和引擎 Elasticsearch (Django) 与 EdgeNgramField 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548528/

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