2016-11-04 68 views
0

有人可以幫助將下面的solr查詢轉換爲java?如何在java中爲多個子查詢編寫solr查詢?

http://<server>/solr/<core>/select?debugQuery=on&indent=on&q=(_query_:"{!edismax mm='100%25' qf='manu^2.0' v=$q1}") 
AND (_query_:"{!edismax mm='100%25' qf='category^2.0' v=$q1}")&q1=galaxy&wt=csv 

我需要知道如何將多個子查詢設置爲查詢。

編輯2:爲了得到準確的答覆,我查詢了3次直到收到答覆。

query.setQuery("manu:"+prefix+" AND category:"+prefix); 
     QueryResponse response = server.query(query); 
     if (response.getResults().getNumFound() == 0) { 
      query.setQuery("manu:"+prefix+" OR category:"+prefix); 
      response = server.query(query); 
      if (response.getResults().getNumFound() == 0) { 
       query.setQuery("text:"+prefix); 
       response = server.query(query); 
      }  
     } 

但它造成了太多的延遲?有沒有更好的方法?

回答

0

我只是在查詢中所做的小修改,使其更簡單

Q =(類別:$ Q1^2.0馬努:$ Q1^2.0)& DEFTYPE = edismax & Q1 =星系&重量= CSV & FL = MANU時,類別

創建Solrclient對象

字符串urlString =「http://server:port/solr/core「;

SolrClient solrClient = new HttpSolrClient.Builder(urlString).build();

創建SolrQuery對象和該對象上執行這樣,還可以設置各種參數

query.set( 「Q」, 「類別:星系和Manu:星系」)的查詢方法;

query.set(「qt」,「/ search」);

query.set(「mm」,「100%」);

query.setQueryType(「edismax」);

query.set(「qf」,「category^2.0 manu^2.0」);

QueryResponse response = solrClient.query(query);

您將獲得SolrDocumentList的列表,您可以在其中迭代並獲取結果。

SolrDocumentList list = response.getResults();

請參考SolrJ Documentation根據您使用的solr版本。

+0

謝謝,它的工作。 :) –

+0

很高興知道;) –

+0

我添加了一個更多的編輯問題@Aman Tandon你能幫忙嗎? –