我們使用Haystack 1.2.7作爲後端,將大約9k個文檔編入索引。儘管使用Haystack,它看起來像一個飛快問題。看看我的調試情況:飛快移動:不應該或只增加結果?
1)如果我只是運行一個精確的查找,嗖發現我的文檔(如下):
>>> SearchQuerySet().all().models(PedidoSaida).filter(numero__exact='6210202443/10')
[<SearchResult: logistica.pedidosaida (pk=u'6')>]
2)如果我只是運行一個startswith查找,嗖沒有按「找不到我的文件(如下):
>>> 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'))
[]
縱觀進入查詢該草堆發送到嗖,我們有:
>>> 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)'
正如你可以看到,最後一個查詢是完全(第一或第二)。不應該飛快地找到我的文檔?我看不到我的邏輯錯在哪裏:我使用OR,並且發現比使用其中一個語句時少。
我也覺得它是奇怪的,飛快找到我的文檔與第一個查詢(數字:6210202443/10),但不是與第二個(數字:6210202443/10 *)之一。但我想它與Haystack在我的CharField中使用的StemmingAnalyzer有關。之後我會深入研究。
我也沒多想使用的QueryParser,謝謝:) – msbrogli 2013-03-01 01:19:58