我正在测试地理搜索的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"/>
提前感谢!
答案 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");
感谢。