2016-05-25 4 views
2

Ich verwende Solr Suche nach Django Anwendung mit Heuhaufen. Um genauere Ergebnisse zu erhalten, musste ich die Suchabfrage ändern exakte Suche durchführen -Was ist der Unterschied zwischen der Verwendung von __exact und 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) 
... 

nun andere Art und Weise Sie die genaue Suche durchführen können wie in einigen Dokumentation erwähnt ist -

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

Was ist der Unterschied zwischen diesen beiden?

Antwort

1

SQ erbt von Djangos Q Objekt und wird Djangos exact Feldsuche verwenden.

Exact ist eine Haystack-Klasse, die ihr eigenes Ding macht. (aber höchstwahrscheinlich endet bei der gleichen Abfrage)

The docs Zustand, dass sie gleichwertig sind, so macht es keinen großen Unterschied, die Sie verwenden.

+0

Perfekt! Danke, dass Sie auf den Link und die Erklärung hingewiesen haben. Der Grund, warum ich frage, ist lokal verwende ich whoosh mit Heuhaufen und es gibt nicht das gleiche Ergebnis, wenn Sie __exact vs Exact() verwenden. mit whoosh mit Exact() gibt das richtige Ergebnis. – Mutant

Verwandte Themen