2012-11-29 11 views
6

Czy jest jakiś powód, aby ustawić dodatkowe pola z indexed=False na SearchIndex?django haystack SearchField z indeksem False

Dokumentacja wspomniała, że ​​należy zdefiniować dodatkowe pola do filtrowania lub porządkowania wyników. Domyślnie SearchIndex ma indexed=True, więc co się stanie, jeśli ustawię indexed=False?

Czy dane nadal będą przechowywane w indeksie, ale nie będą indeksowane? Co się stanie, jeśli ustawię stored=False?

Jak to działa?

Dzięki

Odpowiedz

3

Domyślnie wszystkie pola w stogu siana są zarówno indeksowane (przeszukiwania przez silnik) i przechowywano (zatrzymane przez silnik i prezentowane w wynikach). Korzystając z zapisanego pola, można przechowywać powszechnie używane dane w taki sposób, że nie trzeba uderzać w bazę danych podczas przetwarzania wyniku wyszukiwania, aby uzyskać więcej informacji. Ta zaleta ma tę zaletę, jeśli podasz indexed=True i stored=True.

Jeśli podasz tylko indexed=True, będziesz uderzał w bazę danych podczas przetwarzania wyniku wyszukiwania, aby uzyskać dodatkowe informacje niedostępne w indeksie.

Celem indexed=False jest przygotowanie scenariusza, w którym renderowane pole ma śledzić wstępnie renderowany szablon podczas procesu indeksowania. Dobry przykład jest tutaj zilustrowany - https://django-haystack.readthedocs.org/en/latest/searchindex_api.html#stored-indexed-fields