我使用haystack和whoosh搜索我公司的代码,每个索引的每个文件。大多数时候,它工作正常。但是,当我使用像'port'这样的常用关键字搜索时,搜索需要5分钟才能完成,而CPU则是100%。我认为这是因为结果计数太大(关键字端口为5000+)。的确,我不需要那么多结果,也许100左右就足够了。我该如何设置限制?或者超时也没关系。
答案 0 :(得分:2)
是的,你可以,默认的SearchView类及其方法没有什么特别之处。这是一个示例操作方法:
yourapp网址
# 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'))
)
您可以在设置中覆盖全局:
<强> settings.py 强>
HAYSTACK_MAX_RESULTS = 15
答案 1 :(得分:0)
看看django's pagination - 如果你实现它,它将只显示每页的结果子集,不应该使用这么多的CPU。也就是说,如果您的搜索索引中有数千个项目,您可能想尝试使用另一个后端 - 我发现小型索引(最多约1000个项目)非常理想,但有点慢了。
答案 2 :(得分:0)
也许你应该看看time limited searches。结合有限的收集器实例,您应该能够解决您的问题。