首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-haystack无法索引位置字段。

Django-haystack无法索引位置字段。
EN

Stack Overflow用户
提问于 2014-01-23 11:36:38
回答 1查看 338关注 0票数 0

我在用django-haystack索引一堆地址。我的搜索索引是:

代码语言:javascript
复制
class AddressIndex(indexes.SearchIndex, indexes.Indexable):
    street = indexes.CharField(model_attr='street')
    city = indexes.CharField(model_attr='city')
    location = indexes.LocationField(null=True)

    def prepare_location(self, obj):
        try:
            return obj.location.point
        except AttributeError:
            return None

    def get_model(self):
        return Address

搜索索引当然有更多的字段,但这就足够了。当我试图通过运行./manage.py update_index -k4 -b100 -v2 location (索引存储在location应用程序中)来对其进行索引时,只要prepare_location不返回任何内容,一切都会变得很棒。当它返回某物时(如。0.000,0.000)我从Solr那里得到了一个错误,提到了一些关于不兼容维度的内容。

准确的错误是org.apache.solr.common.SolrException: com.spatial4j.core.exception.InvalidShapeException: incompatible dimension (2) and values (POINT (0.0000000000000000 0.0000000000000000)). Only 0 values specified。我想“也许它不喜欢这一点”,并在point.xpoint.y中添加了0.0000000000000001,但是错误保持不变(除了现在它提到了新的坐标)。

有人知道这是怎么回事吗?

我在用:

  • Python 2.7.5+ (是的,它实际上说当我运行时)
  • Django 1.5.2
  • django-干草堆2.1.0
  • Solr 4.3.0
  • pysolr 3.1.0

在Ubuntu 13.10上安装了所有最新更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 16:02:08

显然,django-haystack本身并没有做什么特别重要的事情。它不会将GeoDjango点转换为所需的"lat,lon“格式,而只是通过Point对象传递到XML。

因此,与其这样做:

代码语言:javascript
复制
def prepare_location(self, obj):
    try:
        return obj.location.point
    except AttributeError:
        return None

其中一个需要这样做:

代码语言:javascript
复制
def prepare_location(self, obj):
    try:
        return "{lat},{lon}".format(lat=obj.location.point.y, obj.location.point.x)
    except AttributeError:
        return None

如果我只是阅读文件,那就容易多了.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21307036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档