2012-04-21 6 views
6

मैं एक्लिप्स में सोलरज के माध्यम से सोलर पूछने की कोशिश कर रहा हूं। मैं नवीनतम solrj wiki उदाहरण की कोशिश की है:सोलरज के माध्यम से सोलर सोलर: मूल बातें

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); 
    } 
} 

हालांकि, मैं कोई फर्क नहीं पड़ता कि मुझे क्या करना इस त्रुटि पिछले नहीं कर सकते मिलती है:

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")); 
      } 

     } 
    } 
:

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 

इसके बाद, मैं रसोई की किताब उदाहरण की कोशिश की

हालांकि, उस उदाहरण को वर्तमान एपीआई के लिए दिनांकित किया जा सकता है क्योंकि मैं SolrQuery लाइब्रेरी आयात भी नहीं कर सकता।

क्या किसी के पास त्वरित बॉयलरप्लेट उदाहरण है जो काम करता है?

अग्रिम धन्यवाद।

पीएस। मैं tomcat7 और solr 3.5 के साथ windows7 चला रहा हूँ। मैं इस बिंदु पर करने की कोशिश कर रहा हूं, एक मूलभूत क्वेरी है और परिणाम किसी भी प्रकार की सूची, सरणी, जो भी हो, वापस प्राप्त करें। जब मैं क्वेरी करता हूं: http://localhost:8080/solr/select/?q=outside फ़ायरफ़ॉक्स में, परिणाम ठीक वापस आते हैं।

उत्तर

6

यहाँ है मैं कैसे Solrj (Solr 3.6) मिला ग्रहण के साथ मेरी Windows 7 बॉक्स पर काम कर रहा:

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); 

    } 
} 

मैं था की Solr बाहर अतिरिक्त जार (डाउनलोड करने के लिए 3.6) इसके लिए काम करने के लिए: httpcomponents-client-4.2-beta1

कुल मिलाकर, मुझे यह काम करने के लिए 4 जार की आवश्यकता थी:

  • अपाचे-Solr-solrj-3.6.0.jar
  • httpclient-4.2-beta1.jar
  • httpcore-4.2-beta1.jar
  • httpmime-4.2-beta1.jar

मुझे यकीन नहीं है कि अगर मेरा समाधान बोइलरोडोड के मामले में सबसे अच्छा अभ्यास माना जाता है, लेकिन यह solrj w/ग्रहण पर उठने का मुद्दा हल करता है।

+4

को तुरंत चालू नहीं कर सकते हैं, मैंने ऊपर जावा उदाहरण का उपयोग किया था, लेकिन मुझे अपने निर्माण पथ में निम्न जार फ़ाइलों की आवश्यकता थी। कॉमन्स-लॉगिंग-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 द्वारा प्रदान किया जाता है। तुम कौन सा संस्करण चला रहे हो? सौर 3.5 संस्करण 1.6.1 की आवश्यकता है, मुझे संदेह है कि आप एक इयरलर संस्करण का उपयोग कर रहे हैं।

यदि आप सोल्ज त्वरित शुरुआत की तलाश में हैं तो मैं ग्रोवी में स्विच करने की अनुशंसा करता हूं। यह Grab annotations का उपयोग कर रन-टाइम पर जार निर्भरता डाउनलोड कर सकता है। उदाहरण:

+0

मार्क, आपकी प्रतिक्रिया के लिए धन्यवाद। बस सुनिश्चित करने के लिए, मैंने सोलर 3.6 डाउनलोड किया, इसे सेट अप किया और कुछ दस्तावेज़ों में लोड किया। मैंने एक नया एक्लिप्स प्रोज और क्लास बनाया, फिर नए जार (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 प्रतिक्रिया = server.query (पैरा); अभी भी उपरोक्त एक ही त्रुटि को वापस चलाता है ... अगर कोई इस में भी चलता है तो बस fyi ... – Chris

+0

उस वर्ग को जिरा मुद्दे एसओएलआर -2020 द्वारा दर्शाया गया है। जावाडॉक्स के अनुसार इसे "HttpSolrServer" द्वारा प्रतिस्थापित किया गया है, लेकिन यह अपाचे एचटीपी घटक पुस्तकालयों पर नई निर्भरताओं को प्रस्तुत करता है (देखें: http://wiki.apache.org/solr/ReleaseNote36) –