2014-06-07 8 views
-2

J'ai un serveur Solr en cours d'exécution (sur une machine Linux, ce n'est pas grave), il est chargé de documents 2M et la recherche fonctionne bien en Java.Vous cherchez le programme Hello World pour Solr.NET en C#

Je dois cependant écrire un programme C# (client) pour l'interroger. J'ai téléchargé Solr.NET mais je suis confus par quoi commencer. Les solutions incluses ne compilent pas, et en parcourant C#, il ne semble pas que le programme fasse ce que je dois faire.

Quelqu'un at-il une sorte de programme Hello World pour Solr.NET en C#? Ci-dessous, je vais publier la version Java de ce que je cherche et, la version C# quelqu'un? Oh, et s'il vous plaît, quel ensemble minimum d'assemblages dois-je inclure dans un programme client aussi simple? Merci

import org.apache.solr.client.solrj.SolrQuery; 
import org.apache.solr.client.solrj.SolrServer; 
import org.apache.solr.client.solrj.impl.HttpSolrServer; 
import org.apache.solr.client.solrj.response.QueryResponse; 
import org.apache.solr.common.SolrDocumentList; 


public class SolrHeloWorld // Java 
{ 

    public static void main(String[] args) 
    { 
     // Connect to server 
     SolrServer solr = new HttpSolrServer ("http://192.168.1.211:8983/solr/collection1"); 

     // Query for search term 'banana' 
     SolrQuery query = new SolrQuery(); 
     query.setQuery("banana"); 
     query.setStart(0); 
     query.setRows(50); 
     query.set("defType", "edismax"); 

     try 
     { 
      QueryResponse response = solr.query(query); 

      // Print results 
      SolrDocumentList results = response.getResults(); 
      for (int i = 0; i < results.size(); i++) 
      { 
       System.out.println(results.get(i)); 
      } 
     } 
     catch (Exception e) 
     { 
      System.out.println("Error: " + e.getMessage()); 
     } 
    } 
} 
+0

Avez-vous essayé la [Documentation] (https://github.com/mausch/SolrNet/blob/master/Documentation/README.md)? – Tim

+0

Documentation? Celui qui est venu avec le téléchargement Solr.NET n'a pas beaucoup de choses là-dedans. Il y a un répertoire appelé Documentation avec quelques fichiers * .md courts. Celui qui s'appelle Queying.md a quelques lignes, mais rien de proche d'un exemple de code complet. Plus important encore, aucun document ne répertorie les espaces de noms/assemblages que je dois inclure pour faire même en compilation. – henry

+0

Et la documentation en ligne qui est votre lien n'a pas ce que je cherche non plus. Cela commence par "Tout d'abord, nous devons mapper le document Solr à une classe". Non, nous ne devons absolument pas faire cela. Je veux récupérer JSON de Solr. Je cherche un exemple d'os nu, sans mappage de classe, sans tests unitaires, etc. Et s'il vous plait, s'il vous plait, s'il vous plait, j'ai besoin d'un ensemble d'espaces de noms à inclure. – henry

Répondre

1

Comme suggéré, j'ai examiné de plus près la documentation de Solr.NET. Pourtant, je n'ai pas été capable de comprendre quels assemblages sont manquants dans les solutions fournies avec le téléchargement, donc ils ne compilent toujours pas! Plus important encore, il ne semble pas que vous puissiez écrire un programme d'os nu qui imprime simplement JSON sans NHibernate, en définissant le mapping de classe et tout ça.

Jamais, il n'est pas si difficile d'écrire un simple programme client Hello World en C# qui interroge Solr. Et cela ne nécessite pas du tout Solr.NET! Voici celui qui utilise HttpWebRequest et JSON sérialiseur/désérialiseur pour imprimer simplement JSON de tous les documents retournés par la requête

using System; 
using System.Net; 
using System.IO; 
using System.Web.Script.Serialization; // Require adding System.Web.Extentions.dll 

class SolrHeloWorld // C# 
{ 
    static void Main() 
    { 
     Uri uri = new Uri("http://192.168.1.211:8983/solr/collection1/select?q=banana&start=0&rows=50&wt=json&indent=true&defType=edismax"); 

     WebRequest request = HttpWebRequest.Create(uri); 
     request.Method = WebRequestMethods.Http.Get; 
     WebResponse response = request.GetResponse(); 
     StreamReader reader = new StreamReader(response.GetResponseStream()); 
     string jsonResponse = reader.ReadToEnd(); 
     response.Close(); 

     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     dynamic jsonObject = serializer.Deserialize<dynamic>(jsonResponse); 
     dynamic dd = jsonObject["response"]["docs"]; 
     Object[] results = (Object[])dd; 

     foreach (Object res in results) 
     { 
      Console.WriteLine(serializer.Serialize(res)); 
     } 
    } 
} 
+0

Si quelque chose ne se compile pas, je recommande de poser une question spécifique à ce sujet sur https://groups.google.com/forum/#!forum/solrnet. Si vous êtes nouveau sur .NET, je vous recommande de changer un peu l'attitude de "Je veux juste faire comme je veux!", Et d'essayer d'abord d'apprendre comment les choses se passent différemment. Des choses comme "Traduisez ce morceau de code pour moi" ne sont généralement pas bien reçues dans Stackoverflow. Si vous ne souhaitez pas mapper les documents Solr à une classe (même si je ne le recommande pas), consultez la page https://github.com/mausch/SolrNet/blob/master/Documentation/Mapping.md#fully-loose- cartographie. –

+0

@ Mauricio Scheffer: Je ne demandais pas de traduire mon code dans une autre langue. J'espérais que le programme Solr C# Hello Word existe déjà et que quelqu'un fournirait un lien. Mais je me suis probablement éloigné de la terre pendant un certain temps et je n'ai pas réalisé que les simples programmes de style Hello Word sont démodés ces jours-ci. Apparemment, inclure n'importe quel type d'exemple complet (et conforme) avec de la documentation plutôt que de définir des doublures est également hors de la faction. Ma faute - je devrais certainement attraper avec la tendance. Merci pour google groupe cependant. – henry

+1

Juste au cas où, encore une fois je vais pointer vers l'exemple d'application: https://github.com/mausch/SolrNet/blob/master/Documentation/Sample-application.md, c'est une application web complète bien au-delà d'un "Bonjour Monde". Aussi https://github.com/mausch/SolrNet/blob/master/Documentation/Basic-usage.md est une procédure pas à pas de l'utilisation normale de la bibliothèque, équivalente à un Hello World. Je ne sais pas ce que tu pourrais vouloir de plus. –