Intégration de Java Lucene avec .Net
Question
J'ai la configuration nutch et lucene pour explorer et indexer certains sites et j'aimerais utiliser un site .net au lieu du site JSP fourni avec nutch.
Quelqu'un peut-il recommander des solutions?
J'ai vu des solutions dans lesquelles une application en cours d'exécution sur le serveur d'index était utilisée par le site .Net pour se connecter.
La vitesse est évidemment une considération alors cela peut-il quand même bien fonctionner?
Modifier: NHibernate.Search pourrait-il fonctionner?
Modifier: Nous avons finalement opté pour des serveurs d'indexation Solr utilisés par notre site ASP.net avec le bibliothèque solrnet .
Autres conseils
Au cas où ce ne serait pas tout à fait clair dans les autres réponses, Lucene.NET et Lucene (Java) utilisent le même format d’index. Vous devriez donc pouvoir continuer à utiliser vos mécanismes existants (basés sur Java) pour . indexation , puis utilisez Lucene.NET dans votre application Web .NET pour interroger l'index.
De le site de l'incubateur Lucene.NET :
En plus des API et des classes port en C #, l'algorithme de Java Lucene est porté en C # Lucene. Ce signifie un index créé avec Java Lucene est compatible en avant et en arrière avec le C # Lucene; à la fois à la lecture, écriture et mise à jour. En fait, Lucene index peut être simultanément recherché et mis à jour avec Java Lucene et C # Processus Lucene
Je travaille aussi sur ça.
http: / /today.java.net/pub/a/today/2006/02/16/introduction-to-nutch-2.html
Il semble que vous puissiez envoyer votre requête à nutch et récupérer les résultats rss.
modifier:
Cela fonctionne aujourd'hui sous une forme Windows comme preuve de concept. Deux zones de texte (searchurl et query), une pour l'URL du serveur et l'autre pour la requête. Une vue de la grille de données.
private void Form1_Load(object sender, EventArgs e)
{
searchurl.Text = "http://localhost:8080/opensearch?query=";
}
private void search_Click(object sender, EventArgs e)
{
string uri;
uri = searchurl.Text.ToString() + query.Text.ToString();
Console.WriteLine(uri);
XmlDocument myXMLDocument = new XmlDocument();
myXMLDocument.Load(uri);
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(myXMLDocument));
SearchResultsGridView1.DataSource = ds;
SearchResultsGridView1.DataMember = "item";
}
Je suis arrivé ici en cherchant une comparaison entre SolrNet et SolrSharp, mais je pensais que je laisserais ici mes impressions.
On dirait que SolarSharp est un projet mort (il n’a pas été mis à jour depuis longtemps), donc la seule option est SolarNet.
J'espère que cela aidera quelqu'un, j'aurais laissé un commentaire sur la réponse acceptée mais je n'ai pas encore assez de réputation:)
Au lieu d’utiliser Solr, j’ai écrit un indexeur basé sur Java qui s’exécute dans un travail cron et un service Web basé sur Java destiné aux requêtes. En fait, je n'ai pas indexé les pages autant que différents types de données que le site .net utilise pour construire les pages. Il y a donc 4 index différents, chacun avec une structure de document différente, qui peuvent tous être interrogés de la même manière (disons: utilisateurs, publications, messages, photos).
En définissant un XSD pour les réponses du service Web, j'ai pu à la fois générer des classes en .net et java pour stocker une représentation des documents. Le service Web exécute la requête sur le bon index et remplit le XML de réponse à partir des occurrences. Le client .net analyse cela en objets. Il existe également une interface JSON pour tout JavaScript côté client.
Pourquoi ne pas passer de java lucene à la version dot net. Bien sûr, c’est un investissement, mais c’est surtout un exercice de substitution de classe. La dernière chose dont vous avez besoin est d’avoir plus de couches qui n’ajoutent aucune valeur autre qu’un simple collage. Vous devriez viser moins de colle et plus de choses ...