6

Eclipseでsolrjを介してsolrにクエリを実行しようとしています。私は最新のsolrjwikiの例を試しました:

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams;

import java.net.MalformedURLException;

public class SolrQuery2 {
  public static void main(String[] args) throws MalformedURLException, SolrServerException {
    SolrServer solr = new CommonsHttpSolrServer("http://localhost:8080/solr");

    // http://localhost:8080/solr/select/?q=outside
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("qt", "/select");
    params.set("q", "outside");

    QueryResponse response = solr.query(params);
    System.out.println("response = " + response);
  }
}

ただし、何をしてもこのエラーを回避することはできません。

Exception in thread "main" java.lang.NoSuchMethodError: 
    org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V

次に、クックブックの例を試しました。

import java.util.Iterator;
import org.apache.solr.client.solrj.SolrQuery; //Error: The import org.apache.solr.client.solrj.SolrQuery conflicts with a type defined in the same file
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SolrQuery {
    
      public static void main(String[] args) throws Exception {

          CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr");
          server.setParser(new XMLResponseParser());
          SolrQuery query = new SolrQuery();
          query.setQuery("document"); //Error: The method setQuery(String) is undefined for the type SolrQuery
          query.setStart(0); //Error: The method setStart(int) is undefined for the type SolrQuery
          query.setRows(10); //Error: The method setRows(int) is undefined for the type SolrQuery
          QueryResponse response = server.query(query); //Error: The method query(SolrParams) in the type SolrServer is not applicable for the arguments (SolrQuery)
          SolrDocumentList documents = response.getResults();
          Iterator<SolrDocument> itr = documents.iterator();
          System.out.println("DOCUMENTS");
          while(itr.hasNext()){
              SolrDocument doc = itr.next();
              System.out.println(doc.getFieldValue("id")+":"+doc.getFieldValue("content"));
          }
          
      }
    }

ただし、SolrQueryライブラリをインポートすることすらできないため、この例は現在のAPIの日付である可能性があります。

誰かがうまくいく簡単な定型文の例を持っていますか?

前もって感謝します。

PS。私はtomcat7とsolr3.5でwindows7を実行しています。この時点で私がやろうとしているのは、基本的なクエリであり、結果をある種のリストや配列などに戻すことです。私がクエリを実行するとhttp://localhost:8080/solr/select/?q=outside、Firefoxでは、結果は問題なく返されます。

4

2 に答える 2

6

これが、Solrj(Solr 3.6)がEclipseを使用してWindows7ボックスで動作するようにした方法です。

import java.net.MalformedURLException;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams;

public class SolrQuery {
  public static void main(String[] args) throws MalformedURLException, SolrServerException {
    SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
        ModifiableSolrParams params = new ModifiableSolrParams();
        params.set("q", "1");

            QueryResponse response = server.query(params);

            System.out.println("response = " + response);

  }
} 

これを機能させるには、追加のjar(Solr 3.6以外)をダウンロードする必要がありました:httpcomponents-client-4.2-beta1

これを機能させるには、合計で4つのjarファイルが必要でした。

  • apache-solr-solrj-3.6.0.jar
  • httpclient-4.2-beta1.jar
  • httpcore-4.2-beta1.jar
  • httpmime-4.2-beta1.jar

私のソリューションがボイラーコードの観点からベストプラクティスと見なされているかどうかはわかりませんが、日食のあるsolrjで立ち上がる問題は解決されます。

于 2012-04-22T09:34:26.577 に答える
1

org.slf4j.spi.LocationAwareLoggerクラスは、slf4j-apijarによって提供されますどのバージョンを実行していますか?Solr 3.5にはバージョン1.6.1が必要ですが、以前のバージョンを使用していると思われます。

Solrjクイックスタートをお探しの場合は、Groovyに切り替えることをお勧めします。Grabアノテーションを使用して、実行時にjarの依存関係をダウンロードできます。例:

于 2012-04-21T16:47:30.160 に答える