gpt4 book ai didi

django-haystack - 无法订购 Haystack/Whoosh 结果(而且速度非常慢)

转载 作者:行者123 更新时间:2023-12-04 06:59:32 25 4
gpt4 key购买 nike

我正在使用 HaystackWhoosh使用来自 Geonames 的城市数据搜索自定义应用程序项目。

我只导入了少量 Geonames 城市数据(22917 条记录)。我想按城市人口对结果进行排序,但我无法获得好的结果。

当我使用 order_by在我的 SearchQuerySet ,结果极其缓慢。它还针对“名称”字段而不是“人口”字段正确排序,所以我想我可能只是做错了什么。

这是搜索索引:

class EntryIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(indexed=False, model_attr='ascii_name')
population = indexes.CharField(indexed=False, model_attr='population')
django_id = indexes.CharField(indexed=False, model_attr='id')

def get_model(self):
return Entry

def index_queryset(self):
return self.get_model().objects.all()

这是模板:
{{ object.ascii_name }}
{{ object.alternate_names }}
{{ object.country.name }}
{{ object.country.iso }}
{{ object.admin1_division.ascii_name }}
{{ object.admin1_division.name }}
{{ object.admin1_division.code }}
{{ object.admin2_division.ascii_name }}
{{ object.admin2_division.name }}

这是相关的 View 代码:
query = request.GET.get('q', '')
results = SearchQuerySet().models(Entry).auto_query(query).order_by('population')

当我拿 order_by关闭查询,它会在不到一秒的时间内返回。打开它,几乎需要 10 秒才能完成,并且结果不是按人口排序的。按名称排序有效,但也需要大约 10 秒。

注意:我也尝试过内置的 Haystack 搜索 View ,当我尝试按人口排序时速度非常慢:
qs = SearchQuerySet().order_by('-population')

urlpatterns = patterns('',
...
url(r'^demo2/$', SearchView(searchqueryset=qs)),
)

最佳答案

我正在做几乎相同的事情,订购对我来说既快速又正确。

您所做的唯一显着不同的是:

query = request.GET.get('q', '')
results = SearchQuerySet().models(Entry).auto_query(query).order_by('population')

由于您指定了一个请求,我假设您已经创建了自己的 View 。您不应该需要自定义 View 。我在我的 urls.py 中实现了这个:
from haystack.forms import ModelSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView, search_view_factory

sqs = SearchQuerySet().models(MyModel).order_by('-weight')

urlpatterns += patterns('',
url(r'^search/$', search_view_factory(
view_class=SearchView,
template='search/search.html',
searchqueryset=sqs,
form_class=ModelSearchForm
), name='search'),
)

关于django-haystack - 无法订购 Haystack/Whoosh 结果(而且速度非常慢),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800863/

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