Django-haystack: SortableIntField dans Solr 5.0.0 est obsolĂšte

CrĂ©Ă© le 26 fĂ©vr. 2015  Â·  20Commentaires  Â·  Source: django-haystack/django-haystack

Selon cette page https://lucene.apache.org/solr/4_10_0/solr-core/org/apache/solr/schema/SortableIntField.html "org.apache.solr.schema.SortableIntField" devrait ĂȘtre remplacĂ© par "org .apache.solr.schema.TrieIntField"

Mais peut-ĂȘtre le savez-vous dĂ©jĂ ...

  • recrĂ©ez le bogue : installez Solr 5.0.0, crĂ©ez un nouveau noyau et exĂ©cutez manage.py build_solr_schema , puis dĂ©placez-le vers votre nouveau noyau
  • accĂ©dez Ă  l'administrateur de votre nouveau noyau http://localhost :8983/solr/ et voyez le message d'erreur indiquant que SortableIntField est obsolĂšte.
  • en fait, tous les Sortable Field sont dĂ©prĂ©ciĂ©s au profit de leur Ă©quivalent dans Trie Field.

Versions :

  • Python 2.7
  • Django 1.4
  • Botte de foin 2.3.1
  • Moteur de recherche utilisĂ© : Solr 5.0.0 avec le dernier pysolr

Citant CHANGES.txt dans la distribution 5.0.0 :

* The following legacy numeric and date field types, deprecated in Solr 4.8, are no
  longer supported: BCDIntField, BCDLongField, BCDStrField, IntField, LongField,
  FloatField, DoubleField, SortableIntField, SortableLongField, SortableFloatField,
  SortableDoubleField, and DateField.  Convert these types in your schema to the
  corresponding Trie-based field type and then re-index.  See SOLR-5936 for more
  information.
solr

Commentaire le plus utile

Les étapes données par @nazariyg sont trÚs utiles, merci.

Dans mon cas (django-haystack 2.4.0 et Sol 5.3.0), j'ai construit le schéma (commande build_solr_schema) avec le modÚle par défaut et édité la sortie avant de coller dans le répertoire conf :
-remplacer sort.Sortable<type>Field cours par sort.Trie<type>Field
-supprimer l'argument enablePositionIncrements="true" dans les filtres avec la classe solr.StopFilterFactory
-supprimer l'argument side="front" dans le filtre avec solr.EdgeNGramFilterFactory

Ces classes et arguments Solr sont dépréciés dans les versions précédentes.

Tous les 20 commentaires

On dirait qu'il ne s'agit que d'une pull request pour modifier les types de champs à deux endroits :

https://github.com/django-haystack/django-haystack/search?utf8=%E2%9C%93&q=SortableIntField

Je crains qu'il ne s'agisse pas seulement de remplacer le nom du champ... Je suis malheureusement un débutant sur les détails d'un schéma Solr. Aussi, d'autres problÚmes apparaissent avec la version 5.0.0, comme order_by un champ Date qui semble cassé...

+1
Luttant avec DateField ne pouvant pas ĂȘtre triĂ©...

Raison : impossible de trier sur le champ à plusieurs valeurs : registration_date

@philippeluickx Vous devriez essayer la pull-request #1148 qui fonctionne bien avec 5.0.0

Oui, essayez-le maintenant !

Obtenir une erreur ici...

Traceback (appel le plus récent en dernier) :
Fichier "orava_project/manage.py", ligne 17, dans
execute_from_command_line(sys.argv)
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/django/core/management/ init .py", ligne 385, dans execute_from_command_line
utilitaire.execute()
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/django/core/management/ init .py", ligne 377, en exécution
self.fetch_command(sous-commande).run_from_argv(self.argv)
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/django/core/management/base.py", ligne 288, dans run_from_argv
self.execute (_args, * _options. dict)
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/django/core/management/base.py", ligne 338, en exécution
sortie = self.handle(_args, *_options)
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/haystack/management/commands/build_solr_schema.py", ligne 56, dans le handle
self.log(champ, resp, backend)
Fichier "/home/orava/.virtualenvs/orava/local/lib/python2.7/site-packages/haystack/management/commands/build_solr_schema.py", ligne 98, dans le journal
raise Exception('impossible de dĂ©coder l'API Solr, ĂȘtes-vous sĂ»r d'avoir dĂ©marrĂ© Solr et crĂ©Ă© le Core configurĂ© (%s) ?' % backend.conn.url)
Exception : impossible de dĂ©coder l'API Solr, ĂȘtes-vous sĂ»r d'avoir dĂ©marrĂ© Solr et crĂ©Ă© le Core configurĂ© (http://127.0.0.1:8983/solr/orava_core) ?

Serait-ce à cause du signe # ? Je peux accéder à l'administrateur via :
http://127.0.0.1 :8983/solr/#/orava_core

Il semble que vous n'ayez pas démarré ou configuré votre Solr 5.0.0 Core nommé "orava_core".
L'URL sans # est bonne.
J'ai annulé par inadvertance des modifications dans les documents qui expliquent comment démarrer Solr 5.0.0 et créer un nouveau noyau avant d'exécuter manage.py build_solr_schema (plus d'arguments sauf --settings ici)
VĂ©rifiez la derniĂšre version de la doc : https://github.com/Stupeflix/django-haystack/blob/master/docs/installing_search_engines.rst

J'ai vérifié et revérifié.
Il fonctionne comme il se doit, le noyau existe et le service solr est opérationnel.
Je ne sais pas si c'est une aide, mais la réponse que je reçois.

noyau manquant dans l'URL ? http://127.0.0.1 :8983/solr/schema devrait ĂȘtre http://127.0.0.1 :8983/solr/orava_core/schema ?


 {'cookies' : <[]>, '_content' : '\n\nPage d'état \n\n\n

Erreur Interne du Serveur

\n

Le serveur a rencontrĂ© une condition inattendue qui l'a empĂȘchĂ© de rĂ©pondre Ă  la demande

\n

Vous pouvez obtenir les détails techniques ici .
\nVeuillez continuer votre visite sur notre page d'accueil .\n

\n\n\n', 'headers' : {'date' : 'Tue, 03 Mar 2015 20:27:59 GMT', 'accept-ranges' : 'bytes', 'content-type' : 'text/ html; charset=UTF-8', 'content-length' : '486'}, 'url' : u'http://127.0.0.1:8983/solr/schema', 'status_code' : 500, '_content_consumed' : True , 'encodage' : 'UTF-8', 'requĂȘte' :, 'lien':, 'elapsed' : datetime.timedelta(0, 0, 32916), 'raw' :, 'raison' : 'Erreur du serveur', 'historique' : []}

Pourriez-vous essayer d'écrire un nouveau test sur la commande build_solr_schema sans arguments (= compatible 5.0.0) dans la suite de tests ? Cela m'aiderait à résoudre le problÚme, cela aiderait également à fusionner la demande d'extraction ... merci

Le fait est que j'essaie toujours de le faire fonctionner ... En fournissant l'option --stdout, j'ai gĂ©nĂ©rĂ© le schĂ©ma XML, mais mĂȘme avec cela, le DateField est multivaluĂ© (ce qui n'est pas le cas)

Je n'aurais également aucune idée de la façon d'écrire un test pour la génération de schéma, car Solr 5 est totalement nouveau pour moi (et j'envisage sérieusement de rétrograder juste pour que cela fonctionne). désolé!

Un autre ne fonctionne pas comme prĂ©vu : [Raison : le paramĂštre de tri n'a pas pu ĂȘtre analysĂ© en tant que requĂȘte et n'est pas un champ existant dans l'index : geodist()]

Avoir le sentiment que la botte de foin n'est pas encore prĂȘte pour la version 5.0.0 et a besoin de quelques tests supplĂ©mentaires avant de passer en production. Je donnerai volontiers le soutien que je peux, mais en dĂ©classant pour l'instant...

Cela s'attendait à ce qu'avec Solr 5, si vous copiez un schema.xml dans le répertoire principal, il sera écrasé par la définition de schéma géré par défaut.

"managed-schema" est généré automatiquement par Solr 5 à la création du noyau et vous ne devez pas le modifier, mais mieux utiliser l'API REST Schema. C'est pourquoi j'ai écrit le nouveau build_solr_schema.

en savoir plus : https://cwiki.apache.org/confluence/display/solr/Managed+Schema+Definition+in+SolrConfig

Bien sûr, plus de tests, c'est mieux, mais je pense que nous pouvons travailler un peu plus sur la pull request #1148 et le faire !

La raison pour laquelle votre DateField est toujours multivaluĂ©e est qu'une ancienne configuration de schĂ©ma est toujours prise en compte par le schĂ©ma gĂ©rĂ© de votre noyau. Vous devriez peut-ĂȘtre recommencer : supprimez le noyau, supprimez le rĂ©pertoire principal, crĂ©ez le noyau et Ă  nouveau build_solr_schema.

puis vĂ©rifiez votre Schema dans l'admin web de votre core oĂč vous avez la configuration rĂ©elle prise en compte par Solr. Schema.xml n'est pas pris en compte par Solr 5 par dĂ©faut

Via le navigateur de schéma, le DateField est marqué comme multivalué pour les propriétés et le schéma, mais pas pour l'index (aucune idée de ce que cela signifie).

J'ai simplement crĂ©Ă© un deuxiĂšme noyau et j'ai les mĂȘmes problĂšmes.

Solr est opérationnel
1 nƓuds Solr trouvĂ©s :

Processus Solr 14332 exécuté sur le port 8983
{
"solr_home":"/var/solr/data/",
"version":"5.0.0 1659987 - anshumgupta - 2015-02-15 12:26:10",
"startTime":"2015-03-04T07:40:49.99Z",
"uptime": "0 jours, 4 heures, 7 minutes, 38 secondes",
"memory":"87 Mo (%17,7) sur 490,7 Mo"}

Veuillez essayer cette application django et son "manage.py solr" pour tester le déploiement de solr 5.0.0
https://github.com/Stupeflix/django-haystack-solr-commands

Avant tout, veuillez arrĂȘter toute autre instance Solr pour Ă©viter les conflits.
Tout sur l'installation et la configuration est dans le README.md
C'est ce que je travaille personnellement maintenant.
J'espĂšre que cela fonctionnera maintenant... car je ne comprends pas plus que cela votre problĂšme.

Nous devrions déplacer cette discussion vers pull-request https://github.com/django-haystack/django-haystack/issues/1148

La plupart des problĂšmes de Solr 5+ peuvent ĂȘtre rĂ©solus en utilisant un modĂšle schema.xml personnalisĂ© basĂ© sur l'un des schĂ©mas par dĂ©faut de Solr 5 https://github.com/nazariyg/Solr-5-for-django-haystack

Les étapes données par @nazariyg sont trÚs utiles, merci.

Dans mon cas (django-haystack 2.4.0 et Sol 5.3.0), j'ai construit le schéma (commande build_solr_schema) avec le modÚle par défaut et édité la sortie avant de coller dans le répertoire conf :
-remplacer sort.Sortable<type>Field cours par sort.Trie<type>Field
-supprimer l'argument enablePositionIncrements="true" dans les filtres avec la classe solr.StopFilterFactory
-supprimer l'argument side="front" dans le filtre avec solr.EdgeNGramFilterFactory

Ces classes et arguments Solr sont dépréciés dans les versions précédentes.

@asier5 Vous auriez probablement encore besoin d'avoir les types de champs edge_ngram et ngram django-haystack définis dans le schéma si jamais vous décidez d'ajouter une fonctionnalité d'auto-complétion.

@nazariyg Merci pour l'information. Je vois que la sortie de build_solr_schema définit déjà ces deux types de champs.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

mslinn picture mslinn  Â·  12Commentaires

ellmetha picture ellmetha  Â·  12Commentaires

notanumber picture notanumber  Â·  12Commentaires

ipmb picture ipmb  Â·  13Commentaires

nikolaz111 picture nikolaz111  Â·  41Commentaires