Django-haystack: Teilwortsuche funktioniert nicht

Erstellt am 7. Sept. 2015  ·  3Kommentare  ·  Quelle: django-haystack/django-haystack

Hallo, dies ist nicht unbedingt ein Problem, sondern eine Konfiguration, die ich nicht zum Laufen bekomme. Jede Hilfe wäre dankbar.

Ich kann die teilweise Suche nicht zum Laufen bringen, aber die genaue Suche gibt das erwartete Ergebnis zurück.

Beispiel: Wenn ich nach 'myservername' suche, bekomme ich 'myservername' als Ergebnis
aber wenn ich nach 'server' suche, bekomme ich nichts zurück. Ich würde jede Objektinstanz erwarten, die 'Server' im Namen enthält.

Ich habe verschiedene Dinge ausprobiert, die auf dieser Website und bei Google im Allgemeinen gefunden wurden, aber nichts hat funktioniert oder ich habe es nicht richtig gemacht. Hier ist, was ich habe.

Ich renne
Python 3.4.3
django 1.8.4
django-elasticsearch 0.5
django-haystack 2.4.0
elastische Suche 1.5.0

settings.py

INSTALLED_APPS = [
...
'haystack',

...

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.request'
            ],
        },
    },
]

search_indexes.py

#import datetime
from django.utils import timezone
from haystack import indexes
from patchui.models import Server

class ServerIndex(indexes.SearchIndex, indexes.Indexable):
    #text = indexes.CharField(document=True, use_template=True)
    #text = indexes.NgramField(document=True, use_template=True)
    text = indexes.EdgeNgramField(document=True, use_template=True)
    #text = indexes.CharField(document=True, use_template=True)
    #text = indexes.CharField(document=True, use_template=True, template_name="server_text.txt")
    serverName = indexes.CharField(model_attr='serverName')
    #serverName = indexes.EdgeNgramField(model_attr='serverName')
    #serverName = indexes.NgramField(model_attr='serverName')
    #content_auto = indexes.NgramField(model_attr='serverName')
    #content_auto = indexes.EdgeNgramField(model_attr='serverName')

    def get_model(self):  return Server

    def index_queryset(self, using=None):
        """Used when the entire index for model is updated."""
        #return self.get_model().objects.filter(lastPatchDate__lte=datetime.datetime.now())
        #return self.get_model().objects.filter(lastPatchDate__lte=timezone.now())
        return self.get_model().objects.all()

urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^patchui/', include('patchui.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^session_security/', include('session_security.urls')),
    url(r'^search/', include('haystack.urls')),
]

server_text.txt

{{ object.serverName }}

Hilfreichster Kommentar

Ich stecke hier in den gleichen Schwierigkeiten.... Wie erreicht man das?

Das ist so frustrierend... Ist es nicht das Erste, was Sie von einer Suchmaschine und einem Wrapper erwarten? Warum ist das so kompliziert und schwierig?

Alle 3 Kommentare

Hab ich schon gemacht, dann schließe ich das mal. Vielen Dank.

Ich stecke hier in den gleichen Schwierigkeiten.... Wie erreicht man das?

Das ist so frustrierend... Ist es nicht das Erste, was Sie von einer Suchmaschine und einem Wrapper erwarten? Warum ist das so kompliziert und schwierig?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen