La búsqueda de texto completo de Django-haystack funciona pero las facetas no

Usando django-haystack y elasticsearch. La búsqueda de texto completo funciona bien, pero tengo problemas para implementar facetas. He buscado tutoriales en la web pero sin éxito, en otras palabras, no entendí ninguno de ellos. Soy un principiante en programación, por lo que agradeceré algo de ayuda. Gracias de antemano. Lo siento en mi inglés si no es bueno, no es mi idioma principal. Aquí está mi búsqueda de texto completo de trabajo.

articulos.modelos.py

class Article(models.Model):
    category =      models.CharField(max_length=60)
    subcategory =   models.CharField(max_length=100)
    name =          models.CharField(max_length=255)
    price =         models.DecimalField(max_digits=8, decimal_places=2)
    pub_date =      models.DateTimeField(auto_now_add=True)
    country =       models.CharField(max_length=60)
    city =          models.CharField(max_length=60)
    # other fields ...

12 categorías (vehículos y piezas, computadoras y piezas ...)

Subcategorías para vehículos y piezas (automóviles, camiones, bicicletas, piezas ...) Resolví esto con javascript al enviar el formulario para el artículo, lo mismo para el país y la ciudad.

articles.search_indexes.py

class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
    text =          indexes.CharField(document=True, use_template=True)
    subcategory =   indexes.CharField(model_attr='subcategory', faceted=True)
    price =         indexes.DecimalField(model_attr='price', faceted=True)
    pub_date =      indexes.DateTimeField(model_attr='pub_date', faceted=True)
    country =       indexes.CharField(model_attr='country', faceted=True)
    city =          indexes.CharField(model_attr='city', faceted=True)

    content_auto = indexes.EdgeNgramField(model_attr='name')

    def get_model(self):
        return Article

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

artículos_texto

{{ object.name }}
{{ object.subcategory }}
{{ object.price }}
{{ object.pub_date }}
{{ object.country }}
{{ object.city }}

articles.views.py

def searchArticles(request):
    articles = SearchQuerySet().autocomplete(content_auto=request.POST.get('search_text', ''))
    return render_to_response('ajax_search.html', {'articles': articles})

base.html

    {% csrf_token %}
    <input type="text" id="search" class="edo-trazi" name="search" />
    <ul id="search-results">
    </ul>

ajax_search.html

{% if articles.count > 0 %}
{% for article in articles %}
<li class="edo-trazi-artikal"><img class="edo-trazi-slika" src="/static/aktiva/{{ artikal.object.slika }}"/>
<a class="edo-trazi-ime" href="/artikli/prikazi/{{ artikal.object.id }}/{{ artikal.object.slug }}/">{{ artikal.object.name }}</a>   
{% endfor %}
{% else %}
<li>No results!</li>
{% endif %}

ajax.js

$(function(){

$('#search').keyup(function() {

    $.ajax({
        type: "POST",
        url: "/search/",
        data: { 
            'search_text' : $('#search').val(),
            'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
        },
        success: searchSuccess,
        dataType: 'html'
    });

});

});

function searchSuccess(data, textStatus, jqXHR)
{
$('#search-results').html(data);
}    

project.urls.py

url(r'^search/

El código del ejemplo anterior está funcionando bien, si alguien está interesado en el autocompletado, puedo guiarlo tanto como sé.

vehicleParts.urls.py

url(r'^

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

, 'articles.views.searchArticles'), url(r'^vehicles-parts/', include('vehiclesParts.urls')),

El código del ejemplo anterior está funcionando bien, si alguien está interesado en el autocompletado, puedo guiarlo tanto como sé.

vehicleParts.urls.py

url(r'^$', 'vehiclesParts.views.vehiclesPartsView', name='vehiclesParts'),
url(r'^search/$', 'vehiclesParts.views.searchVehiclesParts'),

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

, 'vehiclesParts.views.vehiclesPartsView', name='vehiclesParts'), url(r'^search/

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

, 'articles.views.searchArticles'), url(r'^vehicles-parts/', include('vehiclesParts.urls')),

El código del ejemplo anterior está funcionando bien, si alguien está interesado en el autocompletado, puedo guiarlo tanto como sé.

vehicleParts.urls.py

url(r'^$', 'vehiclesParts.views.vehiclesPartsView', name='vehiclesParts'),
url(r'^search/$', 'vehiclesParts.views.searchVehiclesParts'),

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

, 'vehiclesParts.views.searchVehiclesParts'),

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

, 'articles.views.searchArticles'), url(r'^vehicles-parts/', include('vehiclesParts.urls')),

El código del ejemplo anterior está funcionando bien, si alguien está interesado en el autocompletado, puedo guiarlo tanto como sé.

vehicleParts.urls.py

url(r'^$', 'vehiclesParts.views.vehiclesPartsView', name='vehiclesParts'),
url(r'^search/$', 'vehiclesParts.views.searchVehiclesParts'),

vehicleParts.views.py

def vehiclesPartsView(request):
    return render_to_response('vehiclesParts.html', context_instance=RequestContext(request))

def searchVehiclesParts(request):
    articles = SearchQuerySet().facet('subcategory').facet('price').facet('pub_date').facet('country').facet('city')
    # how to make this code run in similar way like above autocomplete(with ajax), also to 
    # filter results by category "filter (category= 'Vehicles and Parts')", because this
    # advanced search I'll have to do for each category to display and search
    # articles only for that category.
    return render_to_response('ajax-vehiclesParts.html', {'articles': articles})

ajax-vehicleParts.html: puede ser igual que ajax_search.html. Solo agregaré algunos campos adicionales. vehicleParts.html - ¿Cómo agregar facetas en la plantilla y en la subcategoría seleccionada o algo más para mostrar los resultados en ajax-vehicleParts.html a través de Ajax? También, si es posible, recordar la subcategoría seleccionada, de modo que si se selecciona la siguiente 'ciudad de Londres' o algo más para mostrar los resultados solo para esa subcategoría.

ajax-vehicleParts.js ?????

Respuestas a la pregunta(0)

Su respuesta a la pregunta