3

嗨,我是使用 Solr 3.6.1 的新手。我正在尝试使用 solr 进行地理空间搜索,其索引是使用 DIH 从 MySQL 导入的。我可以看到*:*查询返回了 lat & lng 数据(但不是 latlng)。

问题:当我尝试地理空间搜索时,没有返回任何结果。当我将搜索距离d增加到非常大的值(如 100000)时,我只会得到结果,并且返回的结果不包含 lat/lng 数据。

我是否错过了阻止搜索地理空间数据的架构或数据配置中的某些内容?

我也想按升序排序。我尝试附加&sort=geodist() asc到查询 url 的末尾,但有一个错误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" />
4

0 回答 0