2010-11-18 77 views
2

我目前正在使用django haystack与xapian。我找不到有关如何在xapian上执行地理空间查询的任何文档。但Solr似乎有一些动力。所以我现在正在试验。如何使用django-haystack + solr执行地理空间搜索

我无法获得spatialSolr在本地正常工作,但现在使用空间solr-light,这似乎工作正常。它接受像

http://127.0.0.1:8080/solr/select/?q=blahblah&spatial=查询LAT {半径= 1.0%20sort =真!}:10.0,经度:-10.0

能anyony点我的草堆一个补丁,让我通过这样的自定义查询。我可以使用raw_search(),但是我不能链接结果。在任何情况下,我想找到一个更干净的方式来做类似 sqs.spatial(....)

谷歌组提供了一些补丁(链接如下),但其中大多数无法达到。

参考文献:

回答

1

如果你没有绑定到Xapian,请看Django, Sphinx and search by distance。当我遇到这个问题时,我遇到了类似的问题,这似乎解决了这个问题。感谢django-sphinx,这与设置Haystack一样简单。狮身人面像似乎也提供了更多的灵活性。

+0

我发现直接从作者发现缺少的干草堆补丁与SpatialSolr。他在http://groups.google.com/group/django-haystack/browse_thread/thread/d0e23d45c0baa300/2298b6cf43389e18?lnk=gst&q=Spatial#2298b6cf43389e18 – Sidmitra 2010-11-19 17:20:18

+0

更新了该主题。还有可能在未来着陆的xapians GIS分支。但在此之前,xapian的当前分支有一个补丁,可以干净地对抗主干分区的地理空间分支的兼容功能。在放弃干草堆之前,先尝试一些这些选项,因为我的大多数搜索逻辑已经建立在这个基础之上。 – Sidmitra 2010-11-19 17:22:39

0

Sidmitra,我用草堆1.2.X了你的解决方案的端口和3.4。有一些限制坦率地说 - 在目前的模式生成的支持,只有经纬度的地理区域类型的支持,通过距离排序是不完美的(但工程)

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

0

https://github.com/sidmitra/django-haystack-spatialsolrplugin同意。

它似乎已经过时了,但我可以通过一些工作打败它。我遇到的问题:

  • 很难找到java SSP,当我发现它是错误的版本。 http://www.dutchworks.nl/en/home/download.html是我工作的链接。

  • 我在网上找到的示例xml文件中的类路径都是错误的;我必须删除.solrext。来自所有人。

  • 该插件是非常挑剔它住在哪个目录;它不能跟别的直到它是在愉快的Solr/lib目录

  • solr_backend.py需要以下补丁(约505行):

    if self.spatial_query: 
        final_query = '{{!spatial circles={lat},{long},{radius} }}{0}'.format(final_query,**self.spatial_query) 
    
  • 我有进一步的问题与制作solrconfig .xml,以便GeoDistanceComponent在查询拥有有效的rsp之前永不加载。

换句话说,你当然可以使它工作,但你必须能够在你到达那里之前处理python和java中的许多错误消息。

相关问题