【问题标题】:Solr Cassandra spatial Search - Can't get any resultSolr Cassandra 空间搜索 - 无法获得任何结果
【发布时间】:2017-11-02 09:56:58
【问题描述】:

您好几天来,我一直在努力从我的空间搜索查询中获得任何结果。

谁能告诉我我做错了什么

我使用 Datastax DSE 5.0.0

首先我创建我的 cassandra 表

CREATE TABLE mytable.test (
id varchar PRIMARY KEY,
latlon varchar
city varchar,
);

它工作正常。 然后我插入一些数据:

insert into mytable.test (id, latlon, city) values ('1', '48.87,2.29','Paris 17' );
insert into mytable.test (id, latlon, city) values ('2', '48.86,2.29','Paris 16' );
insert into mytable.test (id, latlon, city) values ('3', '48.84,2.29','Paris 15' );
insert into mytable.test (id, latlon, city) values ('4', '48.86,2.33','Paris 1' );

然后我将架构 xml(使用 Notepad++)更改为:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="test" version="1.1">
<types>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
      <fieldType name="coord" class="solr.LatLonType" subFieldSuffix="_coordinate" />
      <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0" />
</types>
<fields>
<field indexed="true" multiValued="false" name="id" stored="true" type="StrField"/>
<field indexed="true" multiValued="false" name="city" stored="true" type="TextField"/>
<field indexed="true" multiValued="false" name="latlon" stored="true" type="coord"/>
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
</fields>
<defaultSearchField>city</defaultSearchField>
<uniqueKey>id</uniqueKey>
</schema>

我使用以下命令将此模式发送到 Solr:

curl http://myhost:8983/solr/resource/mytable.test/schema.xml --data-binary @schema.xml -H 'Content-type:text/xml; charset=utf-8'

然后我重新加载 Schema.xml

http://myhost:8983/solr/admin/cores?action=RELOAD&core=mytable.test

我想现在一切都应该准备好了。但我不可能得到任何回报。

select * from mytable.test where solr_query = '{!geofilt sfield=latlon pt=48.87,2.29 d=5}';

答案是“没有结果”。

知道我能做什么吗?谢谢!

【问题讨论】:

    标签: solr cassandra schema datastax


    【解决方案1】:

    如果您在架构中执行任何类型的更改,您需要再次重新索引数据。

    嗯,并非所有情况都如此,例如,您可以添加一个新字段,并且您不需要重新索引,您的旧文档将没有该字段。但是,当您更改字段的类型/分析或“存储”等属性时,您需要重新索引以便更改生效。

    例子:

    curl "http://10.1.2.3:8983/solr/admin/cores?action=RELOAD &name=keyspace.table&reindex=true&deleteAll=false"

    【讨论】:

      【解决方案2】:

      您也可以使用dsetool 重新索引核心,例如

      dsetool reload_core keyspace_name.table_name reindex=true deleteAll=false
      

      请注意,如果您的集群有多个 DC,您需要在每个数据中心上执行一次

      在此处参考 DSE5.0 文档以获取 reindexing in place

      【讨论】:

        猜你喜欢
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多