나는 회사의 코드, 인덱스 당 모든 파일을 검색하기 위해 whoose와 함께 haystack을 사용합니다. 대부분의 경우, 잘 작동합니다. 그러나 '포트'와 같은 일반적인 키워드를 사용하여 검색 할 때 seaching은 5 분이 걸리고 CPU는 100 %가됩니다. 결과 개수가 너무 많아서 (키워드 포트의 경우 5000+ 이상이기 때문입니다) 실제로 나는 많은 결과가 필요하지 않으며 아마도 100 정도면 충분합니다. 한도를 어떻게 설정할 수 있습니까? 또는 시간 초과 또한 OK입니다.헉 스탁에서 검색 결과 수를 제한하거나 시간 초과를 설정하는 방법은 무엇입니까?
2
A
답변
0
django's pagination을 살펴보십시오. 구현하면 페이지 당 결과의 하위 집합 만 표시되며 너무 많은 CPU를 사용해서는 안됩니다. 즉, 검색 색인에 수천 개의 항목이있는 경우 다른 백엔드를 사용하려고 할 수 있습니다. 작은 색인 (최대 1000 개 항목)에 이상적이지만 조금 느린 것으로 나타났습니다.
2
예, 기본 SearchView 클래스 및 그 메소드에 특별한 것은 없습니다. 다음은 예제 사용 방법입니다 :
yourapp의 URL을
# 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]
프로젝트 URL을
urlpatterns += patterns('',
url(r'^search/$', include('yourapp.search.urls'))
)
당신은 당신의 설정에서 세계를 재정의 할 수
settings.py
HAYSTACK_MAX_RESULTS = 15
0
은 어쩌면 당신은 time limited searches 살펴 있어야합니다. 제한된 Collector 인스턴스와 결합하여 문제를 해결할 수 있어야합니다.
나는 장고의 페이지 매김을 알고 있으며 py 응용 프로그램에서 사용합니다. 문제는 결과를 보여주기 전에 whooh가 쿼리를 수행하는 데 너무 많은 시간이 걸린다는 것입니다. 내가 진정으로 원하는 것은 결과 = foo.search (max_result_count = 100)입니다. 나는 osh이 100 번째 결과에 도달하는 한 막 돌아 오기를 원합니다. 그러나 이제는 5000+ 이상의 모든 결과를 얻으려고 계속합니다. – guoqiao
좋아, 니가 무슨 뜻인지 알 겠어. haystack을 사용하여 결과의 하위 집합을 요청하면 whoosh 백엔드가 가능한 가장 효율적인 방법으로이를 수행 할 것으로 확신합니다. 다른 백엔드를 볼 필요가 있습니다. Xapian은 whoosh와 유사하지만 좀 더 효율적으로이 상황을 처리 할 것입니다. – Greg
백엔드에 따라이 작업을 수행하려면 Haystack의 논리에서 더 깊이 파고 들어야 할 것입니다. 그러나 기본 SearchView를 덮어 쓰는 예제를 추가했습니다. –