2012-04-21 10 views
6

Eclipseでsolrjを使用してsolrを照会しようとしています。 は、私は、最新のsolrj wiki例を試してみました:Solrを介してSolrに問い合わせる:基本

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とsolr 3.5でwindows7を実行しています。この時点で私がしようとしているのは、基本的なクエリであり、結果を何らかのリスト、配列、その他のものに戻します。私が照会するとき:http://localhost:8080/solr/select/?q=outsideのfirefoxで、結果はちょうど元気に戻ってきます。

答えて

6

ここでは、私は日食と私のWindows7のボックスに取り組んでSolrj(Solrの3.6)を得た方法である:

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つのジャーが必要でした:

  • のApache-Solrの-solrj-3.6.0.jar
  • HTTPClientの-4.2-beta1.jar
  • httpcore-4.2-beta1.jar
  • httpmime-4.2-beta1.jar

私のソリューションがボイルコードの観点からベストプラクティスと考えられるかどうかはわかりませんが、solrj w/eclipseで起きる問題を解決します。

+4

上記のJavaの例を使用しましたが、ビルドパスに次のjarファイルが必要でした。 commons-logging-1.1.1.jar、httpclient-4.2.1.jar、httpcore-4.2.1.jar、httpmime-4.2.1.jar、slf4j-api-1.6.4.jar、slf4j-simple- 1.6.4.jar、solr-solrj-3.6.0.jar – Adam

+0

+1これも私を助けました。 – Aaron

1

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

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

+0

マーク、ご返信ありがとうございます。確かに、私はSolr 3.6をダウンロードし、それをセットアップしていくつかの文書にロードしました。私は新しいEclipse proj&classを作成し、新しいjar(3.6から)をロードし、今度はライブラリ:org.apache.solr.client.solrj.impl.CommonsHttpSolrServer; CommonsHttpSolrServer型は廃止され、コンパイルされません(エラーが出ます)。イムはそれに慣れているので、イドはむしろj2seに固執する。それ以上のアイデアは高く評価されます。再度、感謝します。 – Chris

+0

編集:使用:インポートorg.apache.solr.client.solrj.SolrServer;代わりに:org.apache.solr.client.solrj.impl.CommonsHttpSolrServer; 3。6は上記の問題を修正しました(オリジナルの問題が掲載されています)。ただし、QueryResponse response = server.query(params);上記の同じエラーが返されます...もしも誰かがこの問題に遭遇した場合のためにfyi ... – Chris

+0

そのクラスはJiraの問題SOLR-2020によって削除されました。 Javadocsによると、これは "HttpSolrServer"に置き換えられますが、Apache Http Componentsライブラリ(http://wiki.apache.org/solr/ReleaseNote36) –

関連する問題