Solr地理搜索

时间:2014-05-29 13:13:19

标签: solr lucene gis

我正在测试地理搜索的solr查询,这是我的查询:

 SolrQuery query =new SolrQuery();
        query.setParam("q","*:*");
        query.setParam("fq","geofilt");
        query.setParam("d","100000");
        query.setParam("pt","51.53750834,-0.19329616");
        query.setParam("sfield","location_s");

我没有得到任何结果,虽然有非常接近的点,也确切地指向pt。 任何想法是什么原因??

提示:我使用此字段类型进行空间搜索(默认情况下会出现在schema.xml中):

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
        geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />

因为当我尝试使用solr网站中提到的这个时,我收到一个错误:

<fieldType name="location_rpt"   class="solr.SpatialRecursivePrefixTreeFieldType"                  spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
               autoIndex="true"
               distErrPct="0.025"
               maxDistErr="0.000009"
               units="degrees" />

这是我的字段定义:

<field name="location_s" type="location_rpt" indexed="true" stored="true"/>

提前感谢!

3 个答案:

答案 0 :(得分:0)

而不是这种字段名称,请只添加1个用于x / y的字段:

<dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="true"/>

这将允许您直接将数据放入solr geo格式:

  "env": "DEV",
        "latlgn_0_coordinate": -2.6263,
        "latlgn_1_coordinate": -44.1978,

请同时查看solr spatialsearch&amp; solr wiki spatialsearch

答案 1 :(得分:0)

如上所述,请确保在您的运行时类路径中。 您可以在路径中下载并安装JTS库:JTS Library

Solr手册 solr install documentation

  

JTS jar文件也必须位于Solr的类路径中。由于一个   事情的组合,JTS不能简单地引用&#34;&#34;   solrconfig.xml中的条目;在Solr的战争中,它需要在WEB-INF / lib中   文件,基本上。

享受:)

答案 2 :(得分:0)

谢谢jean,它在没有使用JTS库的情况下与我合作,solr schema已经使用了我使用过的字段类型:

 <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
   geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />

我定义了该类型的字段并且它有效。这是我的问题:

 SolrQuery query =new SolrQuery();
        query.set("q","*:*");
        query.set("fq","{!geofilt}");
        query.set("pt","32.014708,35.873725");
        query.set("sfield","location");
        query.set("d","100");

感谢。