org.apache.solr.client.solrj.impl.HttpSolrServer $ RemoteSolrException

时间:2014-07-30 06:33:25

标签: java solr

在我的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));
        }
      }
}

有人请帮助......提前致谢..

1 个答案:

答案 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