2011-11-11 10 views
6

Uso il django-haystack per la ricerca sul mio sito. Il mio problema è, vorrei avere risultati di ricerca in cima se il termine di ricerca è stato trovato in un campo specifico. Diciamo che cerco blog-entries, quindi vorrei mostrare quei risultati in cima dove è stato trovato il termine di ricerca nel campo del titolo.Django haystack: potenziamento dei risultati di ricerca se il campo di ricerca appare in un campo specifico

Ho letto la documentazione del pagliaio sull'amplificazione del campo ma non capisco come dovrebbe funzionare.

risposta

4

È possibile:

Modificare il file di indice di ricerca, ad es.

class BlogEntryIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    title = CharField(model_attr='title', boost=1.125) 

NOTA: Come sottolineato nei commenti qui sotto l'avrebbe solo aumentare il titolo non è termine del campo, utilizzare quanto sopra.

oppure puoi passare la spinta al tuo SearchQuerySet ad esempio nel file url haystack.

sqs = SearchQuerySet().boost('title', 1.125) 

urlpatterns = patterns('haystack.views', 
    url(r'^$', SearchView(searchqueryset=sqs), name='haystack_search'), 
) 
+0

Ciao di nuovo, grazie per la rapida risposta! So che queste due varianti dalla documentazione e la prima variante sembrano interessanti ma devo fare qualcos'altro per farlo funzionare? L'ho già provato ma sembra che non cambi niente ... La seconda variante non mi aiuta molto perché aumenta solo un campo di ricerca, non un campo, almeno questo è quanto ho capito. – scherlock

+0

Quale backend di ricerca stai utilizzando? – JamesO

+0

Ho provato whoosh e solr – scherlock

Problemi correlati