2015-03-31 19 views
7

Używam django-haystack (v 2.3.1) z solr (v 5.0.0) i pysolr (v 3.0.0). Śledziłem kod tutorial i skonfigurowałem podobne pliki: myapp/search_indexes.py i search/indexes/myapp/mymodel_text.txt.django-haystack: Nie udało się dodać dokumentów do Solr: [Przyczyna: Błąd 404 nie znaleziono]

./manage.py build_solr_schema > schema.xml działa dobrze, a ja skopiowałem to do $ SOLR_HOME/conf/schema.xml.

Problem występuje, gdy próbuję ./manage.py rebuild_index. Najpierw poproszę o potwierdzenie:

OSTRZEŻENIE: Spowoduje to nieodwracalne usunięcie WSZYSTKIEGO z indeksu wyszukiwania w połączeniu "domyślnym".
Po tym wybraniu możliwe jest przywrócenie z kopii zapasowych lub przebudowanie za pomocą polecenia rebuild_index.
Czy na pewno chcesz kontynuować? [Y/n] y

Następnie zawiedzie:

Usuwanie wszystkich dokumentów z indeksu, ponieważ tak powiedział.
Nie można wyczyścić indeksu Solr: [Przyczyna: Błąd 404 nie odnaleziony]
Wszystkie dokumenty usunięte.
indeksowania 6 historie
Nie udało się dodać dokumenty do Solr: [powód: Błąd 404 Not Found]

moich ustawieniach połączenia są:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr', 
    }, 
} 

Gdybym nawigować do tego adresu URL ja może zobacz stronę administratora Solr. Upewniłem się, że port 8983 jest otwarty dla solr (a także 8000 dla serwera deweloperskiego Django).

Czuję, że mogę nie dostarczyć wystarczającej informacji o połączeniu, ale co jeszcze można sprawdzić?

UPDATE:
Chociaż rozwiązać ten problem tam bardziej przyjść, które były wszystko ustalona przez użyciu Solr (v.4.7.0) zamiast, jak django-stogu siana nie jest gotowy do solr 5 (nie był to problem związany z tym, ale już nie mogę go znaleźć na github

Odpowiedz

4

Th anks do użytkownika366722 w celu sugerowania określenia rdzenia w ustawieniach. Jednak zaniedbałem jeszcze bardziej podstawowy etap tworzenia jądra!

Rozwiązanie:
Tworzenie rdzenia, podając nazwę rdzenia (np 'default') i port (np8983):

$bin/solr create_core -c default -p 8983

Następnie wystarczy podać nazwę rdzenia (np 'default') w ustawieniach URL stogu siana:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr/default', 
    }, 
} 

Gotowe!

Teraz mam

Usuwanie wszystkich dokumentów z indeksu, ponieważ tak powiedział.
Wszystkie dokumenty usunięte.
indeksowania 3 historie

UPDATE:
W chwili pisania tego, ja też włączane do Solr 4.7.0, aby to działało, jak stóg nie był gotowy do solr 5.x

+0

bin/solr create_core -c default -p 8983 możesz mi powiedzieć, który bin?! Dzięki –

+0

który bin zależy od tego, gdzie go zainstalowałeś – ZG101

1

miał ten sam problem i znaleźć odpowiedź. https://stackoverflow.com/a/29833997/366722 musisz określić rdzeń w adresie URL

+0

Którą wersję solr używałeś? Wygląda na to, że [zmieniła się struktura pliku solr.xml] (https://wiki.apache.org/solr/Solr.xml%204.4%20and%20beyond): "W skrócie, [od wersji solr v5.0 ] i zostały zastąpione przez automatyczne wykrywanie rdzeni. " Kiedy się poddałem, nie jestem pewien, czy django-haystack był w stanie stworzyć zgodny plik solr.xml dla v5 z solr (tj. Bez ). – ZG101

+0

Zgadza się. Używam 5.1.0 i ustawiam go przy użyciu starej dokumentacji stogu siana, który używa 4.x. – siavach