Die Django-Heuhaufen-Volltextsuche funktioniert, Facetten jedoch nicht

Mit Django-Heuhaufen und Elasticsearch. Die Volltextsuche funktioniert einwandfrei, aber ich habe Probleme, Facetten zu implementieren. Ich habe das Tutorial im Web durchsucht, aber ohne Erfolg, mit anderen Worten, ich habe keines von ihnen verstanden. Ich bin Anfänger in der Programmierung, so dass einige Hilfe es geschätzt wird. Danke im Voraus. Tut mir leid, wenn mein Englisch nicht gut ist, ist es nicht meine Muttersprache. Hier ist meine Arbeit Volltextsuche.

articles.models.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 Kategorien (Fahrzeuge und Teile, Computer und Teile ....)

Unterkategorien für Fahrzeuge und Teile (PKW, LKW, Fahrräder, Teile ...) Ich habe dies mit Javascript gelöst, als ich das Formular für Artikel abschickte, das auch für Land und Stadt gilt.

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()

articles_text

{{ 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/

Der obige Beispielcode läuft in Ordnung. Wenn sich jemand für Autocomplete interessiert, kann ich ihn so gut wie möglich anleiten.

vehiclesParts.urls.py

url(r'^

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

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

Der obige Beispielcode läuft in Ordnung. Wenn sich jemand für Autocomplete interessiert, kann ich ihn so gut wie möglich anleiten.

vehiclesParts.urls.py

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

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

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

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

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

Der obige Beispielcode läuft in Ordnung. Wenn sich jemand für Autocomplete interessiert, kann ich ihn so gut wie möglich anleiten.

vehiclesParts.urls.py

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

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

, 'vehiclesParts.views.searchVehiclesParts'),

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

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

Der obige Beispielcode läuft in Ordnung. Wenn sich jemand für Autocomplete interessiert, kann ich ihn so gut wie möglich anleiten.

vehiclesParts.urls.py

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

vehiclesParts.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-vehiclesParts.html - Kann mit ajax_search.html identisch sein. Ich füge nur einige zusätzliche Felder hinzu. vehiclesParts.html - Wie füge ich Facetten zu einer Vorlage und einer ausgewählten Unterkategorie hinzu oder etwas anderes, um die Ergebnisse in ajax-vehiclesParts.html über Ajax anzuzeigen? Auch wenn es möglich ist, sich an die ausgewählte Unterkategorie zu erinnern, wird als nächstes "Stadt London" oder etwas anderes ausgewählt, um die Ergebnisse nur für diese Unterkategorie anzuzeigen.

ajax-vehiclesParts.js ?????

Antworten auf die Frage(0)

Ihre Antwort auf die Frage