2010-11-18 8 views
2

J'utilise actuellement django haystack avec xapian. Je n'ai trouvé aucune documentation sur la façon d'effectuer des requêtes géospatiales sur xapian. Mais il semble y avoir un certain élan sur Solr. Donc, je suis en train d'expérimenter avec ça.Comment effectuer une recherche Geo Spatial avec django-haystack + solr

Je n'ai pas réussi à faire en sorte que spatialSolr fonctionne correctement en local, mais pour l'instant, il fonctionne avec la lumière spatiale-solr, ce qui semble fonctionner correctement. Il accepte des requêtes telles que

http://127.0.0.1:8080/solr/select/?q=blahblah&spatial= lat {rayon = 1,0% 20sort = true!}: 10.0, lng: -10,0

peut me diriger anyony à un patch pour botte de foin qui me permet de passer des requêtes personnalisées comme ça. Je pourrais utiliser raw_search(), mais je ne peux pas chaîner les resut. En tout cas, je voudrais trouver une façon plus propre de faire quelque chose comme sqs.spatial (....)

Il y a quelques patches d'autres personnes mentionnées sur le google group (liens ci-dessous), mais la plupart d'entre eux sont inaccessibles.

Références:

Répondre

1

Si vous n'êtes pas lié à Xapian, regardez Django, Sphinx and search by distance. J'ai eu un problème similaire lorsque j'ai rencontré cette question et cela semble la résoudre. Merci à django-sphinx, il est à peu près aussi facile à configurer que Haystack. Sphinx semble également offrir plus de flexibilité.

+0

J'ai trouvé le patch manquant pour la meule de foin avec SpatialSolr directement de l'auteur. Il a mis à jour le fil à l'adresse http://groups.google.com/group/django-haystack/browse_thread/thread/d0e23d45c0baa300/2298b6cf43389e18?lnk=gst&q=Spatial#2298b6cf43389e18 – Sidmitra

+0

Il existe également une branche SIG xapians qui pourrait atterrir dans le futur. Mais jusque-là il y a un patch pour la branche actuelle de xapian qui corrige proprement le tronc des fonctionnalités compatibles de la branche géospatiale. Essayez d'abord certaines de ces options avant d'abandonner la botte de foin, car la plupart de ma logique de recherche est déjà construite sur cela. – Sidmitra

0

Sidmitra, je fait le port de votre solution à l'aide botte de foin 1.2.X et solr 3.4. Avec certaines limites pour être franc - aucun support pour la génération de schéma au moment, seul LatLong de type géo prise en charge, le tri par la distance n'est pas parfait (mais fonctionne)

https://github.com/frutik/django-haystack/tree/1.2.X

0

Je suis d'accord avec https://github.com/sidmitra/django-haystack-spatialsolrplugin.

Il semble être démodé, mais je pourrais le mettre en forme avec un peu de travail. Questions j'ai eu:

  • Difficile de trouver le SSP java et quand je l'ai trouvé était la mauvaise version. http://www.dutchworks.nl/en/home/download.html était le lien qui a fonctionné pour moi.

  • Les chemins de classe dans les exemples de fichiers XML que j'ai trouvés sur le réseau étaient tous faux; J'ai dû supprimer .solrext. de chacun d'eux.

  • Le plugin était très pointilleux sur le répertoire dans lequel il vivait; il ne pouvait parler à rien d'autre jusqu'à ce qu'il soit heureux dans solr/lib

  • solr_backend.py requis le patch suivant (autour de la ligne 505):

    if self.spatial_query: 
        final_query = '{{!spatial circles={lat},{long},{radius} }}{0}'.format(final_query,**self.spatial_query) 
    
  • J'ai eu d'autres problèmes avec le fait solrconfig .xml afin que GeoDistanceComponent ne soit jamais chargé avant que la requête ait une rsp valide.

En d'autres termes, vous pouvez certainement le faire fonctionner, mais vous devez être en mesure de traiter un certain nombre de messages d'erreur dans les deux python et java avant d'y arriver.

Questions connexes