2017-06-01 54 views
0

您好,我一直在努力尋找幾天來從我的空間搜索查詢中獲得任何結果。Solr Cassandra空間搜索 - 無法獲得任何結果

誰能告訴我什麼,我做錯了

我的工作與Datastax DSE 5.0.0

首先創建我卡桑德拉表

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成這樣:

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

<?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

然後我重新加載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}'; 

答案是'沒有結果'。

任何想法我可以做什麼?謝謝 !

回答

2

如果您在架構中執行任何種類的更改,您需要再次重新索引的數據。

好吧,對於所有情況都不是這樣,例如您可以添加一個新字段,並且您不需要重新索引,那麼您的舊文檔將不具有該字段。但是,當你改變字段的類型/分析,或像「保存」等一個屬性,則需要重新索引,這樣的變化在踢

例:

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

+0

比你了它的工程! – Jean

1

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

dsetool reload_core keyspace_name.table_name reindex=true deleteAll=false 

請注意,你需要在每個數據中心做到這一點一次,如果您的集羣有一個以上的DC。

參考DSE5.0文檔這裏reindexing in place