在我的java程序中(QueryResponse response = solr.query(query);)我在线程" main"中得到了Exception。 org.apache.solr.client.solrj.impl.HttpSolrServer $ RemoteSolrException:Point必须位于< lat,lon'或者' x y'格式:amazon.com。我不明白我在这里犯的错误。
代码:
public class Get {
public static void main(String[] args) throws MalformedURLException, SolrServerException {
HttpSolrServer solr = new HttpSolrServer("http://localhost:8080/solr");
SolrQuery query = new SolrQuery();
query.setQuery("sony digital camera");
query.addFilterQuery("cat:electronics","store:amazon.com");
query.setFields("id","price","merchant","cat","store");
query.setStart(0);
query.set("defType", "edismax");
QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();
for (int i = 0; i < results.size(); ++i) {
System.out.println(results.get(i));
}
}
}
有人请帮助......提前致谢..
答案 0 :(得分:0)
原因是您要为字段store
添加过滤器,如果您正在尝试使用Solr分发中的example/
目录中的示例,则会使用{{ 1}}字段类型。示例中定义的位置字段类型需要一个以纬度和经度表示的位置。当您为该字段添加过滤查询以查找文本location
时(与amazon.com
一样),类型不匹配。该字段需要store:amazon.com
对中的值,而您尝试按latitude,longitude
过滤它。
来自示例string
:
schema.xml
如果您想使用单个字符串,可以改为将字段<field name="store" type="location" indexed="true" stored="true"/>
[...]
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
的字段类型更改为store
。