2017-05-05 8 views
0

私はsolrを初めて使用しています。私はデータを持つsolrを使用しています。次に、solrを検索して特定の文書のデータを取得したいとします。私はsolrで検索したい属性値を持っています。私はjavaでこれをやっています。私はWebからすべてのソリューションを試しましたが、動作しません。特定の属性値を使用してsolrから文書を取得

public void searchQuery(String valuetobesearched) throws UnsupportedEncodingException { 
     server = new SolarConnectionClass().getSolrInstance("URL of my solr"); 
     SolrQuery sQueryParams = new SolrQuery(); 
     //String queryString = "*:*"; 
     sQueryParams.setQuery("name:"+URLEncoder.encode(valuetobesearched)); 

     //sQueryParams.addFilterQuery("name:"+URLEncoder.encode(valuetobesearched)); 
     /*sQueryParams.setStart(0); 
     sQueryParams.setRows(5000);*/ 
     //sQueryParams.set("defType", "edismax"); 
     //sQueryParams.set 
     QueryResponse response = null; 
     try { 
      System.out.println(sQueryParams); 
      response = server.query(sQueryParams); 
     } catch (SolrServerException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     SolrDocumentList results = response.getResults(); 
     System.out.println(results.size()); 

     /*if(results.size() > 0) { 
      for (int i = 0; i < results.size(); ++i) { 
       SolrDocument sortedDocument = results.get(0); 
       System.out.println(sortedDocument.getFieldValue("PQR")); 
      } 
     } 
*/ 

    } 

どうすればいいですか?

+0

検索はSolrの管理ページの下に動作しない場合、すなわち '名前:foo'はあなたを与えるものではありませんあなたが望む結果、Javaを介して同じクエリを送信しても何も良いことはありません。 Solr Adminのクエリインタフェースを使用して検索すると、検索は正常に動作しますか? – MatsLindh

+0

はい、solrの管理者でJavaコードによって生成されたクエリを使用して検索したとき、適切なresult.Howを与えていません。 –

+0

あなたはどのバージョンのSolrとSolrJを使用していますか? – freedev

答えて

0

SolrQueryクラスを使用する場合、エンコードパラメータはありません。

ただ、クライアントが透過的に「汚い」作業を行います。この方法でクエリを設定します。

response.getResults().getNumFound() 

:再び

sQueryParams.setQuery("name:" + valuetobesearched); 

を、あなたが使用した結果の合計数を確認することができますresponse.getResults()のサイズはsetRowsパラメータ(あなたの投稿にコメントされています)に依存します。

Solrクエリの仕組みを理解するために、ブラウザを使用してテストを行い、その要求をSolrJに転記することをお勧めします。

あなたのポストのから出てくるURLは例えば:

http://localhost:8983/solr/collection1/select?q=name:hello

+0

私はこれを試しましたが、javaから取得するクエリです。私はsolrの管理者でそのクエリーを使用しました。そこにも、私に適切な結果が与えられていません。私はこんにちはだけの名前で文書を入手したい。そこには私に名前helloを含む多くの他の文書が与えられています。 –

+0

管理ページに表示される検索クエリを表示してください。 – freedev

関連する問題