2015-01-16 32 views
1

好,使用Solr中空间搜索利用卡桑德拉在DataStax企业早上

我所要做的是在其上存储我的卡珊德拉数据库中,并利用DataStax企业连接到Solr的数据空间搜索。

一些信息....我已经创建了数据库并与数据一起存储..我也已经创建了一个solr核心,并且可以使用Solr Admin在我的数据库中查询数据。

此时,我正在改变我的schema.xml,以便可以读取我的数据并执行空间查询。

我有几个问题,

1)我应该什么变量类型,以便能有由卡桑德拉正确读取我的纬度和经度点使用内卡桑德拉?

这是我现在有 - 一个例子输入 -

- 我的经纬度信息(经纬度点)存储在卡珊德拉一个varchar变量。运行时,

insert into device(id, location) VALUES('test','45.17614,-93.87341'); 

--still得到同样的结果:

"error": { 
    "msg": "The field location does not support spatial filtering", 
    "trace": "org.apache.solr.common.SolrException: The field location does not support spatial filtering 
    "code": 500 

}

2)这是我当前的schema.xml ----它看起来正确的吗?

*不知道如果我在正确的地方有dynamicField .....(试图领域的部分太)

这是我使用Solr管理查询....还试图在终端

{!geofilt pt=45.15,-93.85 sfield=location d=5} ----在管理

SELECT * FROM device WHERE solr_query='{!geofilt sfield=location pt=45.15,-93.85 d=5}' limit 10; -----终端

我的密钥空间作出这样的:

CREATE KEYSPACE device WITH REPLICATION = {'class':'NetworkTopologyStrategy','Solr':1};

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<schema name="autoSolrSchema" version="1.5"> 
    <types> 
     <fieldType class="org.apache.solr.schema.StrField" name="StrField"/> 
     <fieldType class="solr.LatLonType" subFieldSuffix="_coordinate"  name="coord"/> 
    </types> 
    <fields> 
     <field indexed="true" multiValued="false" name="id" stored="true" type="StrField"/> 
     <field indexed="true" multiValued="false" name="location" stored="true" type="coord"/> 
     <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false"/> 
    </fields> 
    <uniqueKey>id</uniqueKey> 
</schema> 

谢谢!

+0

我已经尝试dynamicefield下的字段内的字段以及无济于事...... – user1655963

+0

您报告的数据没有意义:您创建了名为“pois”的表,然后查询名为“mylocation”的表;您的查询结果示例与schema.xml不匹配...请发布清晰,一致的数据,然后我们会尽力提供帮助。 – sbtourist

+0

我很抱歉,我现在编辑了所有的信息。 – user1655963

回答

2
  1. 根据DSE文档,LatLonType映射到Cassandra文本或varchar列类型。

检查Solr的维基一些Solr的例子: http://wiki.apache.org/solr/SpatialSearch

  • 您的架构看起来不错,快速浏览。
  • 错误消息引用的是与您指定的Solr架构(“位置”)不同的字段名称(“mylocation”)。

    +0

    我已经编辑了我的原始问题,将数据包含在我的数据库中,以varchar为实际点。这些数据是否正确输入Jack? – user1655963

    +0

    顺便说一句,这是我的错误,我现在在模式中指定mylocation - 只是没有把最新的模式,.....我仍然有相同的错误出现 – user1655963