2017-04-15 3 views
0

Ich versuche, Solr 6.5.0 Java zu verbinden. Ich habe hinzugefügt folgende .jar-Dateien in die Bibliothek:Problem in Solr verbinden Java

commons-io-2.5 
httpclient-4.4.1 
httpcore-4.4.1 
httpmine-4.4.1 
jcl-over-slf4j-1.7.7 
noggit-0.6 
slf4j-api-1.7.7 
stax2-api-3.1.4 
woodstox-core-asl-4.4.1 
zookeeper-3.4.6 
solr-solrj-6.5.0 

aber wenn ich folgenden Code versuchen, die solr zu verbinden:

import org.apache.http.impl.bootstrap.HttpServer; 
import org.apache.solr.client.solrj.SolrQuery; 
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.SolrDocumentList; 

public class SolrQuery { 

    public static void main(String[] args) throws SolrServerException { 
    HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/collection1"); 
    SolrQuery query = new SolrQuery(); 
    query.setQuery("*"); 
    QueryResponse response = solr.query(query); 
    SolrDocumentList results = response.getResults(); 
    for (int i = 0; i < results.size(); ++i) { 
     System.out.println(results.get(i)); 
    } 
    } 
} 

, bevor ich es kompilieren, ich habe einen Fehler in der:

import org.apache.solr.client.solrj.impl.HttpSolrServer; 
import org.apache.solr.client.solrj.SolrQuery; 
HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/collection1"); 

Kann jemand mir helfen, es zu lösen?

+0

Welchen Fehler bekommen Sie? – MatsLindh

+0

Ich kann Code nicht kompilieren, wenn ich den Code ausführe, heißt es: HttpSolrServer kann nicht aufgelöst werden \t Der Konstruktor HttpServer (String) ist nicht definiert \t Die Methode setQuery (String) ist nicht definiert für den Typ SolrQuery –

Antwort

1

Das Stück Code in Ihrer Frage wurde für eine alte Version von Solr vor ver geschrieben. 5.0. Sie werden viele Quellen und Beispiele für alte Solr-Versionen finden, aber in den meisten Fällen müssen Sie nur die alte SolrServer Klasse mit der neuen SolrClient (und jetzt korrigieren) -Klasse ändern.

Beide waren die Darstellungen der Solr-Instanzen, die Sie verwenden möchten.

Lesen Sie die Solr Documentation - Using SolrJ

Ich schlage vor, warm nicht den gleichen Namen einer bereits bestehenden Klasse für Ihre Klassen zu verwenden (in Ihrem Beispiel ist Ihre Klasse mit dem Namen SolrQuery).

Die Zeichenfolge catch all für Solr-Abfragen ist *:*, was bedeutet: Suche nach einer Übereinstimmung für alle verfügbaren Felder. So ändern Sie die Anweisung query.setQuery in:

query.setQuery("*:*"); 

Ich nehme an, Sie verwenden ein Solr Client für eine eigenständige Instanz so, wie Sie bereits bewusst sind, ist der richtige Weg zum Beispiel ein SolrClient ist:

String urlString = "http://localhost:8983/solr/gettingstarted"; 
SolrClient solr = new HttpSolrClient.Builder(urlString).build(); 

Und dies ist ein einfacher Weg, ich durch alle zurück Dokument iterieren vorschlagen:

for (SolrDocument doc : response.getResults()) { 
    System.out.println(doc); 
} 

Werfen Sie einen Blick in die Dokumentation von SolrDocument c Lass, die erklären, wie man es benutzt und Feldwerte korrekt liest.

1

gründete ich, dass ich brauche eine .jar-Datei zu importieren, die nicht in der/dist-Bibliothek enthalten ist, die slf4j-simple-1.7.25 genannt, und

HttpSolrServer solr = new HttpServer("http://localhost:8983/solr/gettingstarted"); 
     SolrQuery query = new SolrQuery(); 

Bedarf auch auf die

String urlString = "http://localhost:8983/solr/gettingstarted"; 
    SolrClient solr = new HttpSolrClient.Builder(urlString).build(); 

zu ändern, nachdem dass es endlich laufen kann !!!