우리는 Hoosh 2.4.1과 함께 Haystack 1.2.7을 사용하여 백엔드로 색인 된 약 9,000 개의 문서를 보유하고 있습니다. Haystack을 사용함에도 불구하고, 그것은 Whoosh 문제처럼 보입니다. , 붕 아무튼를Whoosh : 검색 결과 만 늘리면 안됩니까?
>>> SearchQuerySet().all().models(PedidoSaida).filter(numero__exact='6210202443/10')
[<SearchResult: logistica.pedidosaida (pk=u'6')>]
2) 난 그냥 startswith 조회를 실행하는 경우 : 난 그냥 정확한 조회를 실행하는 경우
이1), 붕)는 다음과 같이 (내 문서를 찾아 내 디버그의 경우에서 살펴 보자 't (아래로) 내 문서를 찾을 : 나는 하나의 OR 쿼리에서 모두 함께 넣으면
>>> SearchQuerySet().all().models(PedidoSaida).filter(numero__startswith='6210202443/10')
[]
3), 붕는 여전히 내 문서를 찾을 수없는() 아래로 :
>>> SearchQuerySet().all().models(PedidoSaida).filter(SQ(numero__exact='6210202443/10') | SQ(numero__startswith='6210202443/10'))
[]
건초 더미가 붕에 보내는 쿼리로 살펴보면 6,
, 우리는이 : 당신이 관찰 할 수 있듯이
>>> str(SearchQuerySet().all().models(PedidoSaida).filter(numero__exact='6210202443/10').query)
'(numero:6210202443/10) AND (django_ct:logistica.pedidosaida)'
>>> str(SearchQuerySet().all().models(PedidoSaida).filter(numero__startswith='6210202443/10').query)
'(numero:6210202443/10*) AND (django_ct:logistica.pedidosaida)'
>>> str(SearchQuerySet().all().models(PedidoSaida).filter(SQ(numero__exact='6210202443/10') | SQ(numero__startswith='6210202443/10')).query)
'((numero:6210202443/10 OR numero:6210202443/10*)) AND (django_ct:logistica.pedidosaida)'
는 마지막 쿼리는 정확하게 (첫 번째 또는 두 번째). Whoosh가 내 문서를 찾지 않아야합니까? 나는 내 논리가 잘못된 곳을 볼 수 없다 : 나는 OR을 사용하고 있으며, 진술 중 하나를 사용할 때보 다 적게 찾는다.
또한 Whoosh가 첫 번째 쿼리 (numero : 6210202443/10)로 내 문서를 찾았지만 두 번째 (numero : 6210202443/10 *)는 내 문서를 찾지 못한다고 생각합니다. 하지만 Haystack이 CharField에서 사용하는 StemmingAnalyzer와 관련이 있다고 생각합니다. 나는 그걸 깊이 들여다 볼게.
나는 QueryParser를 사용하는 것에 대해 생각하지 않았다. :) – msbrogli