gpt4 book ai didi

python - Haystack 搜索不适用于自动完成

转载 作者:行者123 更新时间:2023-11-28 17:45:27 25 4
gpt4 key购买 nike

我正在尝试使用 django-haystack 在我们的产品中实现搜索功能。当用户输入任何搜索关键字(即“计算机”)时,它应该针对多个字段搜索该关键字。例如。当用户输入“计算机”时,它应该在该对象的任何字段中找到“计算机”存在的对象。但有一个问题。如果用户仅在搜索字段中输入“Comp”,则根本找不到对象。

所以我尝试使用自动完成功能。通过自动完成,我只能在一个字段中实现这一点。对于其他字段再次失败返回结果。

我正在使用 whoosh 作为后端的 haystack。

环境细节:
Django v1.5.3
干草堆 v2.1.0
Whoosh v2.5.3

以下是在我的 search_index.py 文件中定义的。

class Message_Index(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
message = indexes.CharField(model_attr='messagetext', null=True)
forum = indexes.CharField(model_attr='forum', null=True)
status = indexes.CharField(model_attr='status', null=True)
tags = indexes.CharField(model_attr='tags', null=True)
author_name = indexes.EdgeNgramField(null=True)
author_number = indexes.EdgeNgramField(null=True)
message_date = indexes.DateTimeField(null=True)

def get_model(self):
return Message

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

def prepare_author_name(self, obj):
return obj.message.user.name

def prepare_author_number(self, obj):
return obj.message.user.number

def prepare_message_date(self, obj):
return obj.message.date

def prepare_tags(self, obj):
return [tag.tag for tag in obj.tags.all()]

def prepare_message_thread(self, obj):
return obj.message.thread

我正在尝试通过以下方式搜索:

当我尝试使用 search_keyword = 'user1' 进行搜索时,它返回了正确的结果,但是当我输入 search_keyword = '223' 时,它没有返回任何结果。

results_by_name = results.autocomplete(author_name=search_keyword)
results_by_number = results.autocomplete(author_number=search_keyword)

if results_by_name.count() > 0:
combined_resultsets(results,results_by_name,'message_date')
elif results_by_number.count() > 0:
combined_resultsets(results,results_by_number,'message_date')

combined_resultsets 是一个函数,定义如下:

def combined_resultsets(resultset1, resultset2, sortby):
if sortby is not None:
resultset1 = sorted(chain(resultset1, resultset2),key=attrgetter(sortby))
else:
resultset1 = chain(resultset1, resultset2)

有人可以帮我吗?

最佳答案

请将您的 url 项目设置为 view.py 应用程序根目录中的自动完成方法。您可以在 Autocomplete 上关注文档 haystack| , 请检查您的模板索引。

关于python - Haystack 搜索不适用于自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18872858/

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