2017-04-15 1 views
0

J'essaie d'utiliser solr 6.5.0 pour connecter java. J'ai ajoutés à la suite des fichiers .jar à la bibliothèque:problème dans solr connecter 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 

mais lorsque je tente utiliser le code ci-dessous pour connecter le SOLR:

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

avant que je le compiler, je suis une erreur dans le:

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

Quelqu'un peut-il m'aider à le résoudre?

+0

Quelle erreur obtenez-vous? – MatsLindh

+0

je ne peux pas compiler le code, quand je lance le code, il dit: HttpSolrServer ne peut être résolu à un type \t Le constructeur HttpServer (String) est non défini \t La méthode setQuery (String) est non définie pour le type SolrQuery –

Répondre

1

Le morceau de code dans votre question a été écrit pour une ancienne version de Solr avant ver. 5.0. Vous trouverez de nombreuses sources et exemples écrits pour les anciennes versions de Solr, mais dans la plupart des cas, tout ce que vous avez à faire est de changer l'ancienne classe SolrServer avec la nouvelle classe SolrClient (et maintenant correcte).

Les deux étaient les représentations des instances Solr que vous souhaitez utiliser.

Lire les Solr Documentation - Using SolrJ

Je suggère vivement de ne pas utiliser pour vos classes le même nom d'une classe déjà existante (dans votre exemple, votre classe est nommé SolrQuery).

La chaîne tout attraper pour les requêtes Solr est *:* ce qui signifie: rechercher toute correspondance pour tous les champs disponibles. Donc, changer la déclaration query.setQuery dans:

query.setQuery("*:*"); 

Je suppose que vous utilisez un client Solr pour une instance autonome donc, comme vous le savez déjà, la bonne façon par exemple un SolrClient est:

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

C'est un moyen plus facile que je suggère de parcourir tous les documents retournés:

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

Jetez un oeil à la documentation de SolrDocument c Lass qui explique comment l'utiliser et lire correctement les valeurs de champ.

1

J'ai fondé que j'ai besoin d'importer un fichier .jar qui contient dans la bibliothèque/dist qui a nommé slf4j-simple-1.7.25, et aussi

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

besoin de changer la

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

après que ça peut enfin tourner !!!