我使用 haystack 和 whoosh 来搜索我公司的代码,每个索引的每个文件。大多数时候,它工作正常。但是,当我使用一些常用关键字(如“端口”)进行搜索时,搜索需要 5 分钟才能完成,并且 CPU 为 100%。我认为这是因为结果计数太大(关键字端口为 5000+)。确实,我不需要那么多结果,也许100个左右就足够了。如何设置限制?或超时也可以。
问问题
1657 次
3 回答
2
是的,您可以,默认的 SearchView 类及其方法没有什么特别之处。这是一个示例操作方法:
你的应用网址
# Django specific
from django.conf.urls import *
# App specific
from yourapp.search.views import AdvancedSearchView
urlpatterns = patterns('yourapp.views',
url(r'^$', AdvancedSearchView(), name='yourapp_search'),
)
意见
# Django specific
from django.conf import settings
# App specific
from haystack.views import SearchView
LIMIT = getattr(settings, 'HAYSTACK_MAX_RESULTS', 50)
class AdvancedSearchView(SearchView):
def get_results(self):
return self.form.search()[:LIMIT]
项目网址
urlpatterns += patterns('',
url(r'^search/$', include('yourapp.search.urls'))
)
您可以在设置中覆盖全局:
设置.py
HAYSTACK_MAX_RESULTS = 15
于 2012-12-20T14:50:07.910 回答
0
也许你应该看看限时搜索。结合有限的 Collector 实例,您应该能够解决您的问题。
于 2013-01-14T20:33:59.923 回答
0
看看django 的分页- 如果你实现它,它只会显示每页结果的子集,并且不应该使用太多 CPU。也就是说,如果您的搜索索引中有数千个项目,您可能想尝试使用另一个后端 - 我发现 whoosh 非常适合小型索引(最多约 1000 个项目),但除此之外有点慢。
于 2012-03-28T23:38:26.170 回答