2016-05-25 11 views
2

Haystackを使用してDjangoアプリケーションのSolr検索を使用しています。より正確な結果を得るために、私は正確な検索を実行する検索クエリを変更しなければならなかった -__exactとExact()の違いは何ですか?

from haystack.query import SearchQuerySet, SQ 
from haystack.inputs import Exact 

.... 
query = SQ(tags_indexed=Exact(val.lower())) 
sqs = SearchQuerySet().models(
        SampleModel).filter(query) 
... 

、いくつかのドキュメントで述べたように、あなたが正確な検索を行うことができ、他の方法がある -

query = SQ(tags_indexed__exact=val.lower()) 

これらの2つの違いは何ですか?

答えて

1

SQは、djangosのQオブジェクトを継承し、djangos exactフィールドルックアップを使用します。

Exactは、独自のことを行うHaystackクラスです。 (しかし、ほとんどの場合、同じクエリで終了する可能性があります)

The docsこれらは同等であるため、使用する違いはほとんどありません。

+0

完璧!リンクと説明を指摘してくれてありがとう。私が尋ねる理由は、ローカルではHaystackでwhooshを使用し、__exactとExact()を使用した場合と同じ結果は得られません。 Exact()を使用しているwhooshは正しい結果を返します。 – Mutant

関連する問題