Как мне использовать синтаксис запроса в solrJ? - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно реализовать этот запрос в solrJ

&sort=query($manu_sort,0) desc, query($manu_service_sort,0) desc, query($seller_sort,0) desc, _s_name asc, sku asc &manu_sort=ManufacturerName:"Service Champ" &manu_service_sort=ManufacturerName:"SERVICE CHAMP" &seller_sort=BestSeller:true

, когда я напрямую добавляю к своему коду, например,

        customSort = "&sort=query($manu_sort,0) desc, query($manu_service_sort,0) desc, query($seller_sort,0) desc, _s_name asc, sku asc &manu_sort=ManufacturerName:"Service Champ" &manu_service_sort=ManufacturerName:"SERVICE CHAMP" &seller_sort=BestSeller:true"; 
        queryQ = queryQ+customSort;
        solrQuery.setQuery(queryQ);
        QueryResponse e = this.provider.get(this).query(solrQuery, METHOD.POST);

, это выдает ошибку типа

 no field name specified in query and no default specified via 'df' param

может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 02 июля 2019

Я не смог получить ваш запрос ... но могу предложить пример кода, который может вам помочь.

  String solrUrl = "http://localhost:8983/solr/";
  HttpSolrClient httpSolrClient = new HttpSolrClient.Builder(solrUrl).build();
  SolrQuery query = new SolrQuery();
  query.setQuery("*:*");
  query.set("defType","edismax");
  //query.set("qf","file_name^10 content_text^1");
  query.addFilterQuery("name : abcdef");

  //sorting & direction
  query.addSort("Name_of_field_For_sorting", SolrQuery.ORDER.desc);

  // set the debug 
  //query.set("debug",  "true");

  //for faceting
  //query.setFacet(true);
  //query.addFacetField("name_of_the_Field")
  //query.setFacetLimit(10);

  //set the fields
  query.setFields(new String[] {"id", "name"});

  // for highlighting 
  query.setHighlight(true);
  query.addHighlightField("Name_of_field_to_be_Highlighted");
  query.addHighlightField("content_text");
  query.setHighlightSimplePre("<hlt>");
  query.setHighlightSimplePost("</hlt>");
  query.setHighlight(true).setHighlightSnippets(2);
  query.setHighlightFragsize(150);

  query.setStart(0);
  query.setRows(10);

  QueryResponse response = httpSolrClient.query(query);
  SolrDocumentList results = response.getResults();
  //iterate the results
  for (int i = 0; i < results.size(); ++i) {
    System.out.println(results.get(i));
  }

Другая попытка может быть похожа на приведенную ниже.

SolrQuery query = new SolrQuery();   
String nested = "";
nested += "Field_name:";
nested += "Field_Value";
nested += " AND _query_:\"{!dismax qf=Field_name1=";
nested += "Field_Value1";
nested += "}\"";
query.setQuery(nested);
String fieldList = "id,name,category";
query.set("fl", fieldList);
QueryResponse response = httpSolrClient.query(query);
...