2

私の質問は少し奇妙かもしれませんが、動作が私が期待したものではないので、それは私を悩ませてきました. これが私のクエリです:

query = request.GET.get('q','')
#in search_indexes:
#start_datetime = indexes.DateTimeField(model_attr='start_datetime',null=True)
#end_datetime = indexes.DateTimeField(model_attr='end_datetime')
search_events = SearchQuerySet().models(Event).filter(content=query).
                filter(end_datetime__gte=datetime.now()).
                order_by("start_datetime")

のようなクエリを入力すると、"asdfasdfjasldf lolol hwtf asdlfka"まだ 3 つの結果が得られます。(注、開始するイベントは 5 つしかありません。それが何かに影響するかどうかはわかりません。) スコアを印刷すると、[42,42,42]. filter()正確なフレーズで一致しませんか? 特に引用符を使用する場合は?

//編集 も使用してみauto_queryましたが、結果は同じです。

何が起こっているのか本当に混乱しているので、誰かがこれを解決するのを手伝ってくれることを願っています. 前もって感謝します!

4

2 に答える 2

2

私のチームの誰かが HAYSTACK_DEFAULT_OPERATOR を「AND」ではなく「OR」に設定していたことが判明しました。すべてを説明します - 追加のフィルタ タグは実際に結果の数を拡大していました!

于 2011-05-13T18:38:25.727 に答える
1

次を使用して検索を実行したい場合がありますauto_query()

search_events = SearchQuerySet().models(Event)
                                .auto_query(query)
                                .filter(end_datetime__gte=datetime.now())
                                .order_by("start_datetime")

フレーズが引用符で囲まれている場合の正確なクエリ検索など、いくつかの追加機能があります。

于 2011-05-13T17:39:45.587 に答える