您好我是使用Solr 3.6.1的新手。我正在尝试使用solr进行地理空间搜索,其索引是使用DIH从MySQL导入的。我可以看到有lat& amp;从*:*
查询返回的lng数据(但不是latlng)。
问题:当我尝试进行地理空间搜索时,我没有收到任何结果。当我将搜索距离d
增加到非常大的值(如100000)时,我才会得到结果,并且返回的结果不包含lat / lng数据。
我是否遗漏了架构或数据配置中阻止地理空间数据被搜索的内容?
我还想按照上升距离排序。我尝试将&sort=geodist() asc
附加到查询网址的末尾,但出现错误unknown query type 'asc'
。谢谢你的帮助!! :)
地理空间查询:
http://127.0.0.1:8080/solr/select?wt=json&q=*:*&start=0&rows=10&fl=*,score&fq={!geofilt pt=41.570015,-71.09061 sfield=latlng d=5}
地理空间查询结果:
{"responseHeader":
{"status":0,
"QTime":0,
"params":{"fl":"*,score","start":"0",
"q":"*:*",
"wt":"json",
"fq":"{!geofilt pt=41.570015,-71.09061 sfield=latlng d=5}","rows":"10"}},
"response":{
"numFound":0,
"start":0,
"maxScore":0.0,
"docs":[]
}
}
*.*
的一些结果:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">517</int>
<lst name="params">
<str name="explainOther"/>
<str name="fl">*,score</str>
<str name="indent">on</str>
<str name="start">70000</str>
<str name="q">*:*</str>
<str name="hl.fl"/>
<str name="wt"/>
<str name="fq"/>
<str name="rows">100</str>
<str name="version">2.2</str>
</lst>
</lst>
<result name="response" numFound="76270" start="70000" maxScore="1.0">
<doc>
<float name="score">1.0</float>
<str name="id">2584854</str>
<float name="lat">41.570015</float>
<float name="lng">-71.09061</float>
</doc>
数据导入
query="select id, lat, lng,
concat_ws(',', lat, lng) as latlng
from listings"
模式
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
<field name="latlng" type="location" indexed="true" stored="true" />
<field name="lat" type="float" indexed="true" stored="true" />
<field name="lng" type="float" indexed="true" stored="true" />
<dynamicField name="*_coordinate" type="double" indexed="true" stored="false" multiValued="false" />