5

作成中の Web アプリのインデックスと検索機能に solr と solrj を使用しています。私のリクエストハンドラーは、solrconfig.xml で次のように構成されています。

<requestHandler name="/select" class="solr.SearchHandler">
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <str name="start">0</str>
   <int name="rows">10</int>
   <str name="defType">edismax</str>
   <str name="qf">
      title^10.0 subtitle^7.0 abstract^5.0 content^1.0 text^1.0
   </str>
   <str name="pf">
      title^10.0 subtitle^7.0 abstract^5.0 content^1.0 text^1.0
   </str>
   <str name="df">text</str>

 </lst>
</requestHandler>

現状では、インデックス作成と検索はうまく機能しています。ただし、ページネーションを実装したい。構成ファイルには、「開始」および「行」データが含まれています。ただし、solrj で実行すると、次のようになります。

SolrQuery query = new SolrQuery(searchTerm);
System.out.println(query.getRequestHandler());
System.out.println(query.getRows());
System.out.println(query.getStart());

3 つの print ステートメントはそれぞれ null を示しています。これらの「gets」のそれぞれに対応する「set」があることは理解していますが、solrconfig.xml の応答ハンドラを介してすでに設定されていると想像していました。誰かが私に手がかりを与えることができますか?

4

2 に答える 2

9

サーバーでクエリを実行する前に、クライアントはサーバー側で何を設定したかを知りませんよね? したがって、それらがすべて null であることは驚くことではありません。

ページネーションを実装するには、クライアント側からの 2 つのパラメーター (ページ番号とページあたりのアイテム数) が必要です。これら 2 つを取得したら、次のようにクライアント側で SolrQuery を構築できます。

SolrQuery query = new SolrQuery(searchTerm);
query.setStart((pageNum - 1) * numItemsPerPage);
query.setRows(numItemsPerPage);
// execute the query on the server and get results
QueryResponse res = solrServer.query(solrQuery);
于 2013-06-07T20:57:27.963 に答える